diff options
author | Adolfo SBH | 2016-03-11 17:01:53 +0000 |
---|---|---|
committer | Ed Willink | 2016-03-23 17:53:21 +0000 |
commit | e34593e95fa52d99e8a4fa2d103d67310e21cb9a (patch) | |
tree | a2b6294281756e3a48d64a5f55eafdbe24dd2c31 /tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as | |
parent | b0b720bfe02a110d5d000b742ff3dc2ea9baeff6 (diff) | |
download | org.eclipse.qvtd-e34593e95fa52d99e8a4fa2d103d67310e21cb9a.tar.gz org.eclipse.qvtd-e34593e95fa52d99e8a4fa2d103d67310e21cb9a.tar.xz org.eclipse.qvtd-e34593e95fa52d99e8a4fa2d103d67310e21cb9a.zip |
[cs2as] - New generated lookup descriptions
Diffstat (limited to 'tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as')
3 files changed, 190 insertions, 176 deletions
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 |