From e34593e95fa52d99e8a4fa2d103d67310e21cb9a Mon Sep 17 00:00:00 2001 From: Adolfo SBH Date: Fri, 11 Mar 2016 17:01:53 +0000 Subject: [cs2as] - New generated lookup descriptions --- .../tests/models/example2/classescs2as.cs2as | 9 +- .../tests/models/example2/classescs2asLookup.ocl | 291 +++++++++++---------- .../tests/models/example2/classescs2asV2Lookup.ocl | 66 ++--- 3 files changed, 190 insertions(+), 176 deletions(-) (limited to 'tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse') diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2as.cs2as b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2as.cs2as index 2adb31a16..317f98ca7 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2as.cs2as +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2as.cs2as @@ -30,15 +30,18 @@ nameresolution { name-qualifier PathNameCS name-segments-property path; /*from source */ Root { - same-scope ownedPackages; + scopes-resetting + Package using ownedPackages; } Package { named-element - qualifying Package using ownedPackages, + qualifies Package using ownedPackages, Class using ownedClasses; - nested-scope ownedPackages, ownedClasses; + scopes-occluding + Package using ownedPackages + Class using ownedClasses; } Class { diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2asLookup.ocl b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2asLookup.ocl index 72d867627..586e737fc 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2asLookup.ocl +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2asLookup.ocl @@ -1,140 +1,151 @@ -import cs : 'ClassesCS.ecore#/' -import as : 'Classes.ecore#/' -import 'EnvExample2.ecore' - -package ocl ----- Default Environment related functionality -context OclElement --- -def : env() : lookup::LookupEnvironment = - _env(null) - -def : _env(child : OclElement) : lookup::LookupEnvironment = - parentEnv() - -def : parentEnv() : lookup::LookupEnvironment = - let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._env(self) endif -endpackage - -package lookup - -context LookupEnvironment -def : nestedEnv() : LookupEnvironment = - LookupEnvironment { - parentEnv = self - } - -endpackage - -package as - -context Root - -def : _env(child : ocl::OclElement) : lookup::LookupEnvironment = - parentEnv() - .addElements(ownedPackages) - -context Package -def : _qualification_env() : lookup::LookupEnvironment = - let env = lookup::LookupEnvironment{} - in env - .addElements(ownedPackages) - .addElements(ownedClasses) - -def : _lookupQualifiedPackage(pName : String) : Package[?] = - let foundPackage = _lookupPackage(_qualification_env(), pName) - in if foundPackage->isEmpty() - then null - else foundPackage->first() - endif - -def : lookupQualifiedPackage(aPathElementCS : cs::PathElementCS) : Package[?] = - _lookupQualifiedPackage(aPathElementCS.name) - -def : _lookupQualifiedClass(cName : String) : Class[?] = - let foundClass = _lookupClass(_qualification_env(), cName) - in if foundClass->isEmpty() - then null - else foundClass->first() - endif - -def : lookupQualifiedClass(aPathElementCS : cs::PathElementCS) : Class[?] = - _lookupQualifiedClass(aPathElementCS.name) - - -def : _env(child : ocl::OclElement) : lookup::LookupEnvironment = - parentEnv().nestedEnv() - .addElements(ownedPackages).addElements(ownedClasses) -context Class - -def : _env(child : ocl::OclElement) : lookup::LookupEnvironment = - parentEnv() - -context Visitable --- Package lookup -def : _lookupPackage(env : lookup::LookupEnvironment, pName : String) : OrderedSet(Package) = -let foundPackage = env.namedElements->selectByKind(Package)->select(name = pName) -in if foundPackage->isEmpty() and not (env.parentEnv = null) - then _lookupPackage(env.parentEnv, pName) - else foundPackage - endif - --- Note: when calling this method, the source element of the argument passed to this method, will be the contextual --- object on which error reports will be handled -def : _lookupPackage(pName : String) : Package[?] = -let foundPackage = _lookupPackage(env(), pName) -in if foundPackage->isEmpty() - then null - else foundPackage->first() -- LookupVisitor will report ambiguous result - endif - -def : lookupPackage(aPathElementCS : cs::PathElementCS) : Package[?] = - _lookupPackage(aPathElementCS.name) - - --- QN Package lookup -def : lookupPackage(aPathNameCS : cs::PathNameCS) : Package[?] = - lookupPackage(aPathNameCS .path) - -def : lookupPackage(segments : OrderedSet(cs::PathElementCS)) : Package[?] = - if segments->size() = 1 - then lookupPackage(segments->first()) - else let qualifierSegments = segments->subOrderedSet(1,segments->size()-1), - qualifier = lookupPackage(qualifierSegments) - in qualifier?.lookupQualifiedPackage(segments->last()) - endif --- Class lookup -def : _lookupClass(env : lookup::LookupEnvironment, cName : String) : OrderedSet(Class) = -let foundClass = env.namedElements->selectByKind(Class)->select(name = cName) -in if foundClass->isEmpty() and not (env.parentEnv = null) - then _lookupClass(env.parentEnv, cName) - else foundClass - endif - --- Note: when calling this method, the source element of the argument passed to this method, will be the contextual --- object on which error reports will be handled -def : _lookupClass(cName : String) : Class[?] = -let foundClass = _lookupClass(env(), cName) -in if foundClass->isEmpty() - then null - else foundClass->first() -- LookupVisitor will report ambiguous result - endif - -def : lookupClass(aPathElementCS : cs::PathElementCS) : Class[?] = - _lookupClass(aPathElementCS.name) - - --- QN Class lookup -def : lookupClass(aPathNameCS : cs::PathNameCS) : Class[?] = - lookupClass(aPathNameCS .path) - -def : lookupClass(segments : OrderedSet(cs::PathElementCS)) : Class[?] = - if segments->size() = 1 - then lookupClass(segments->first()) - else let qualifierSegments = segments->subOrderedSet(1,segments->size()-1), - qualifier = lookupPackage(qualifierSegments) - in qualifier?.lookupQualifiedClass(segments->last()) - endif - - -endpackage +import cs : 'ClassesCS.ecore#/' +import as : 'Classes.ecore#/' +import 'EnvExample2.ecore' + +package ocl +---- Default Environment related functionality +context OclElement +-- +def : _exported_env(importer : OclElement) : lookup::LookupEnvironment[1] = + lookup::LookupEnvironment { } + +-- Domain specific default functionality +def : unqualified_env_Class() : lookup::LookupEnvironment[1] = + _unqualified_env_Class(null) +def : unqualified_env_Package() : lookup::LookupEnvironment[1] = + _unqualified_env_Package(null) + +def : _unqualified_env_Class(child : OclElement) : lookup::LookupEnvironment[1] = + parentEnv_Class() +def : _unqualified_env_Package(child : OclElement) : lookup::LookupEnvironment[1] = + parentEnv_Package() + +def : parentEnv_Class() : lookup::LookupEnvironment[1] = + let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._unqualified_env_Class(self) endif +def : parentEnv_Package() : lookup::LookupEnvironment[1] = + let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._unqualified_env_Package(self) endif +-- End of domain specific default functionality +endpackage + +package lookup +context LookupEnvironment +def : nestedEnv() : LookupEnvironment[1] = + LookupEnvironment { + parentEnv = self + } +endpackage + +package as + + +context Root +def : _unqualified_env_Package(child : ocl::OclElement) : lookup::LookupEnvironment = + let env = lookup::LookupEnvironment {} + in env + .addElements(ownedPackages) + + +context Package + +def : _lookupQualifiedPackage(pName : String) : Package[?] = + let foundPackage = _lookupPackage(_qualified_env(), pName) + in if foundPackage->isEmpty() + then null + else foundPackage->first() + endif +def : lookupQualifiedPackage(aPathElementCS : cs::PathElementCS) : Package[?] = + _lookupQualifiedPackage(aPathElementCS.name) + + +def : _lookupQualifiedClass(cName : String) : Class[?] = + let foundClass = _lookupClass(_qualified_env(), cName) + in if foundClass->isEmpty() + then null + else foundClass->first() + endif +def : lookupQualifiedClass(aPathElementCS : cs::PathElementCS) : Class[?] = + _lookupQualifiedClass(aPathElementCS.name) + + +def : _qualified_env() : lookup::LookupEnvironment = + let env = lookup::LookupEnvironment{} + in env + .addElements(ownedPackages) +.addElements(ownedClasses) +def : _unqualified_env_Package(child : ocl::OclElement) : lookup::LookupEnvironment = + parentEnv_Package().nestedEnv() + .addElements(ownedPackages) + +def : _unqualified_env_Class(child : ocl::OclElement) : lookup::LookupEnvironment = + parentEnv_Class().nestedEnv() + .addElements(ownedClasses) + + +context Visitable +-- Package lookup +def : _lookupPackage(env : lookup::LookupEnvironment, pName : String) : OrderedSet(Package) = +let foundPackage = env.namedElements->selectByKind(Package)->select(name = pName) +in if foundPackage->isEmpty() and not (env.parentEnv = null) + then _lookupPackage(env.parentEnv, pName) + else foundPackage + endif + +-- Note: when calling this method, the source element of the argument passed to this method, will be the contextual +-- object on which error reports will be handled +def : _lookupUnqualifiedPackage(pName : String) : Package[?] = +let foundPackage = _lookupPackage(unqualified_env_Package(), pName) +in if foundPackage->isEmpty() + then null + else foundPackage->first() -- LookupVisitor will report ambiguous result + endif +def : lookupPackage(aPathElementCS : cs::PathElementCS) : Package[?] = + _lookupUnqualifiedPackage(aPathElementCS.name) + + +-- QN Package lookup +def : lookupPackage(aPathNameCS : cs::PathNameCS) : Package[?] = + lookupPackage(aPathNameCS .path) + +def : lookupPackage(segments : OrderedSet(cs::PathElementCS)) : Package[?] = + if segments->size() = 1 + then lookupPackage(segments->first()) + else let qualifierSegments = segments->subOrderedSet(1,segments->size()-1), + qualifier = lookupPackage(qualifierSegments) + in qualifier?.lookupQualifiedPackage(segments->last()) + endif + +-- Class lookup +def : _lookupClass(env : lookup::LookupEnvironment, cName : String) : OrderedSet(Class) = +let foundClass = env.namedElements->selectByKind(Class)->select(name = cName) +in if foundClass->isEmpty() and not (env.parentEnv = null) + then _lookupClass(env.parentEnv, cName) + else foundClass + endif + +-- Note: when calling this method, the source element of the argument passed to this method, will be the contextual +-- object on which error reports will be handled +def : _lookupUnqualifiedClass(cName : String) : Class[?] = +let foundClass = _lookupClass(unqualified_env_Class(), cName) +in if foundClass->isEmpty() + then null + else foundClass->first() -- LookupVisitor will report ambiguous result + endif +def : lookupClass(aPathElementCS : cs::PathElementCS) : Class[?] = + _lookupUnqualifiedClass(aPathElementCS.name) + + +-- QN Class lookup +def : lookupClass(aPathNameCS : cs::PathNameCS) : Class[?] = + lookupClass(aPathNameCS .path) + +def : lookupClass(segments : OrderedSet(cs::PathElementCS)) : Class[?] = + if segments->size() = 1 + then lookupClass(segments->first()) + else let qualifierSegments = segments->subOrderedSet(1,segments->size()-1), + qualifier = lookupPackage(qualifierSegments) + in qualifier?.lookupQualifiedClass(segments->last()) + endif + + + +endpackage diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2asV2Lookup.ocl b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2asV2Lookup.ocl index 59bdfdc1e..6f656f2f8 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2asV2Lookup.ocl +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/classescs2asV2Lookup.ocl @@ -11,32 +11,32 @@ def : _exported_env(importer : OclElement) : lookup::LookupEnvironment[1] = lookup::LookupEnvironment { } -- Domain specific default functionality -def : env_Class() : lookup::LookupEnvironment[1] = - _env_Class(null) -def : env_Package() : lookup::LookupEnvironment[1] = - _env_Package(null) -def : env_Operation() : lookup::LookupEnvironment[1] = - _env_Operation(null) -def : env_Property() : lookup::LookupEnvironment[1] = - _env_Property(null) +def : unqualified_env_Class() : lookup::LookupEnvironment[1] = + _unqualified_env_Class(null) +def : unqualified_env_Package() : lookup::LookupEnvironment[1] = + _unqualified_env_Package(null) +def : unqualified_env_Operation() : lookup::LookupEnvironment[1] = + _unqualified_env_Operation(null) +def : unqualified_env_Property() : lookup::LookupEnvironment[1] = + _unqualified_env_Property(null) -def : _env_Class(child : OclElement) : lookup::LookupEnvironment[1] = +def : _unqualified_env_Class(child : OclElement) : lookup::LookupEnvironment[1] = parentEnv_Class() -def : _env_Package(child : OclElement) : lookup::LookupEnvironment[1] = +def : _unqualified_env_Package(child : OclElement) : lookup::LookupEnvironment[1] = parentEnv_Package() -def : _env_Operation(child : OclElement) : lookup::LookupEnvironment[1] = +def : _unqualified_env_Operation(child : OclElement) : lookup::LookupEnvironment[1] = parentEnv_Operation() -def : _env_Property(child : OclElement) : lookup::LookupEnvironment[1] = +def : _unqualified_env_Property(child : OclElement) : lookup::LookupEnvironment[1] = parentEnv_Property() def : parentEnv_Class() : lookup::LookupEnvironment[1] = - let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._env_Class(self) endif + let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._unqualified_env_Class(self) endif def : parentEnv_Package() : lookup::LookupEnvironment[1] = - let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._env_Package(self) endif + let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._unqualified_env_Package(self) endif def : parentEnv_Operation() : lookup::LookupEnvironment[1] = - let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._env_Operation(self) endif + let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._unqualified_env_Operation(self) endif def : parentEnv_Property() : lookup::LookupEnvironment[1] = - let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._env_Property(self) endif + let parent = oclContainer() in if parent = null then lookup::LookupEnvironment { } else parent._unqualified_env_Property(self) endif -- End of domain specific default functionality endpackage @@ -52,7 +52,7 @@ package as context Root -def : _env_Package(child : ocl::OclElement) : lookup::LookupEnvironment = +def : _unqualified_env_Package(child : ocl::OclElement) : lookup::LookupEnvironment = let env = lookup::LookupEnvironment {} in env .addElements(ownedPackages) @@ -85,11 +85,11 @@ def : _qualified_env() : lookup::LookupEnvironment = in env .addElements(ownedPackages) .addElements(ownedClasses) -def : _env_Package(child : ocl::OclElement) : lookup::LookupEnvironment = +def : _unqualified_env_Package(child : ocl::OclElement) : lookup::LookupEnvironment = parentEnv_Package().nestedEnv() .addElements(ownedPackages) -def : _env_Class(child : ocl::OclElement) : lookup::LookupEnvironment = +def : _unqualified_env_Class(child : ocl::OclElement) : lookup::LookupEnvironment = parentEnv_Class().nestedEnv() .addElements(ownedClasses) @@ -121,13 +121,13 @@ def : _qualified_env() : lookup::LookupEnvironment = in env .addElements(ownedOperations) .addElements(ownedProperties) -def : _env_Operation(child : ocl::OclElement) : lookup::LookupEnvironment = +def : _unqualified_env_Operation(child : ocl::OclElement) : lookup::LookupEnvironment = parentEnv_Operation().nestedEnv() .addElements(self->closure(superClass).ownedOperations) .nestedEnv() .addElements(ownedOperations) -def : _env_Property(child : ocl::OclElement) : lookup::LookupEnvironment = +def : _unqualified_env_Property(child : ocl::OclElement) : lookup::LookupEnvironment = parentEnv_Property().nestedEnv() .addElements(self->closure(superClass).ownedProperties) .nestedEnv() @@ -174,14 +174,14 @@ in if foundPackage->isEmpty() and not (env.parentEnv = null) -- Note: when calling this method, the source element of the argument passed to this method, will be the contextual -- object on which error reports will be handled -def : _lookupPackage(pName : String) : Package[?] = -let foundPackage = _lookupPackage(env_Package(), pName) +def : _lookupUnqualifiedPackage(pName : String) : Package[?] = +let foundPackage = _lookupPackage(unqualified_env_Package(), pName) in if foundPackage->isEmpty() then null else foundPackage->first() -- LookupVisitor will report ambiguous result endif def : lookupPackage(aPathElementCS : cs::PathElementCS) : Package[?] = - _lookupPackage(aPathElementCS.name) + _lookupUnqualifiedPackage(aPathElementCS.name) -- QN Package lookup @@ -206,14 +206,14 @@ in if foundClass->isEmpty() and not (env.parentEnv = null) -- Note: when calling this method, the source element of the argument passed to this method, will be the contextual -- object on which error reports will be handled -def : _lookupClass(cName : String) : Class[?] = -let foundClass = _lookupClass(env_Class(), cName) +def : _lookupUnqualifiedClass(cName : String) : Class[?] = +let foundClass = _lookupClass(unqualified_env_Class(), cName) in if foundClass->isEmpty() then null else foundClass->first() -- LookupVisitor will report ambiguous result endif def : lookupClass(aPathElementCS : cs::PathElementCS) : Class[?] = - _lookupClass(aPathElementCS.name) + _lookupUnqualifiedClass(aPathElementCS.name) -- QN Class lookup @@ -269,14 +269,14 @@ in if foundOperation->isEmpty() and not (env.parentEnv = null) -- Note: when calling this method, the source element of the argument passed to this method, will be the contextual -- object on which error reports will be handled -def : _lookupOperation(oName : String, args : OrderedSet(Argument)) : Operation[?] = -let foundOperation = _lookupOperation(env_Operation(), oName, args) +def : _lookupUnqualifiedOperation(oName : String, args : OrderedSet(Argument)) : Operation[?] = +let foundOperation = _lookupOperation(unqualified_env_Operation(), oName, args) in if foundOperation->isEmpty() then null else foundOperation->first() -- LookupVisitor will report ambiguous result endif def : lookupOperation(aPathElementCS : cs::PathElementCS, args : OrderedSet(Argument)) : Operation[?] = - _lookupOperation(aPathElementCS.name, args) + _lookupUnqualifiedOperation(aPathElementCS.name, args) -- QN Operation lookup @@ -301,14 +301,14 @@ in if foundProperty->isEmpty() and not (env.parentEnv = null) -- Note: when calling this method, the source element of the argument passed to this method, will be the contextual -- object on which error reports will be handled -def : _lookupProperty(pName : String) : Property[?] = -let foundProperty = _lookupProperty(env_Property(), pName) +def : _lookupUnqualifiedProperty(pName : String) : Property[?] = +let foundProperty = _lookupProperty(unqualified_env_Property(), pName) in if foundProperty->isEmpty() then null else foundProperty->first() -- LookupVisitor will report ambiguous result endif def : lookupProperty(aPathElementCS : cs::PathElementCS) : Property[?] = - _lookupProperty(aPathElementCS.name) + _lookupUnqualifiedProperty(aPathElementCS.name) -- QN Property lookup -- cgit v1.2.3