diff options
author | Adolfo SBH | 2015-05-01 10:46:45 +0000 |
---|---|---|
committer | Adolfo SBH | 2015-08-09 13:46:48 +0000 |
commit | eb6562a608a805de81c388bb2bb0856896f47d42 (patch) | |
tree | 14430706af88c3c49720db1a0ada8ccf355815b7 | |
parent | 0b814948bffc71f5523f61add6434764fff05e79 (diff) | |
download | org.eclipse.qvtd-asanchez/pathElementCSLookups.tar.gz org.eclipse.qvtd-asanchez/pathElementCSLookups.tar.xz org.eclipse.qvtd-asanchez/pathElementCSLookups.zip |
[ocl2qvti] - oclContainer opcall analysis in context X, will alsoasanchez/pathElementCSLookups
consider containment properties whose type is the subtype of X.
- Defining AST ops for PathNameCS and PathElementCS
Conflicts:
plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl
tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi
tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl
tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/Source2Target_qvtp_qvtias.java
24 files changed, 2221 insertions, 867 deletions
diff --git a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtiUtils.eol b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtiUtils.eol index 9df8e252f..8ab06d34a 100644 --- a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtiUtils.eol +++ b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtiUtils.eol @@ -1,8 +1,16 @@ - +-- globalVars: traceabilityPropName +-- +-- in order to use getTraceabilityProperty() helper operation a traceabilityPropName should have been defined +-- +-- operation OCL!ShadowExp getExpressionContextType () : OCL!Class { return self.getContainingExpressionInOCL().ownedContext.type; } +operation OCL!Operation getContextType () : OCL!Class { + return self.bodyExpression.ownedContext.type; +} + operation OCL!OCLExpression getContainingExpressionInOCL() { var container = self.eContainer(); while (not container.isKindOf(OCL!ExpressionInOCL)) { @@ -32,6 +40,16 @@ operation OCL!ShadowPart getUpdateMappingName() : String { return 'u' + ShadowExp.getShadowTypeName() + '_' + refProp.name; } +operation OCL!Operation getUpdateMappingName() : String { + var opType = self.bodyExpression.ownedContext.type; + return 'u' + opType.name + '_' + opType.getTraceabilityProperty().name; +} + +operation OCL!Type getTraceabilityProperty() : OCL!Property { + // return self.ownedAttribute.selectOne(x | x.name = 'ast'); // FIXME can we parameterize the traceability property name ? + return self.asSequence().closure(x | x.superClasses).including(self).ownedProperties.flatten().selectOne(x | x.name = traceabilityPropName); +} + // FIXME clash naming // Remove if the traceMM-based transformation is discarded operation OCL!ShadowExp getTraceElementName() : String { diff --git a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl index 2bf55378a..2d301ae35 100644 --- a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl +++ b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl @@ -160,7 +160,7 @@ rule ShadowPart2UpdateMapping var pAssignment = new QVTi!PropertyAssignment; pAssignment.targetProperty = refProp; - pAssignment.value = s.createPropertyAssignmentValue(leftVar); + pAssignment.value = s.ownedInit.createPropertyAssignmentValue(leftVar); pAssignment.slotExpression = asTypeOpCallExp; var guardPattern = new QVTi!GuardPattern; @@ -173,77 +173,131 @@ rule ShadowPart2UpdateMapping t.bottomPattern = bottomPattern; } -operation OCL!ShadowExp createCreationMapping_LeftDomain ( ) : QVTi!CoreDomain { - var contextType = self.getExpressionContextType(); - var domain = new QVTi!CoreDomain; - domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= LEFT); - domain.isCheckable = true; +rule AstOpWithNoShadowExps2UpdateMapping + transform s : OCL!Operation + to t : QVTi!Mapping { - var guardPattern = new QVTi!GuardPattern; - var bottomPattern = new QVTi!BottomPattern; + guard { + // FIXME this is hazardy. Rework + // Ideally lazy transformation on the content of the OCL Model should avoid calling + // this rule on undesired elemenets (imported from other ocl files) + return s.closure(x|x.eContainer()).contains(LEFTCS_PACKAGE) and + s.isAstOp() and + not s.isInvalidOp() and + not s.getAllContents().exists(x | x.isKindOf(OCL!ShadowExp)); + } - var variable = new QVTi!Variable; - variable.name = contextType.name.firstToLowerCase(); - variable.type = contextType; + t.name = s.getUpdateMappingName(); + + var rightDomain = s.createUpdateMapping_RightDomain(); + var leftDomain = s.createUpdateMapping_LeftDomain(); + + t.domain.add(leftDomain); + t.domain.add(rightDomain); + + // Bottom pattern expression : AssignmentExp + var leftVar = leftDomain.guardPattern.variable.first(); + + var varExpression = new QVTi!VariableExp; + varExpression.referredVariable = leftVar; + varExpression.type = varExpression.referredVariable.type; + var traceabilityProperty = varExpression.type.getTraceabilityProperty(); + + var pAssignment = new QVTi!PropertyAssignment; + pAssignment.targetProperty = traceabilityProperty; + pAssignment.value = s.bodyExpression.ownedBody.createPropertyAssignmentValue(leftVar); + pAssignment.slotExpression = varExpression; + + var guardPattern = new QVTi!GuardPattern; + var bottomPattern = new QVTi!BottomPattern; + bottomPattern.assignment.add(pAssignment); - guardPattern.variable.add(variable); + t.guardPattern = guardPattern; + t.bottomPattern = bottomPattern; +} + +operation createDomain() : QVTi!CoreDomain { + + var domain = new QVTi!CoreDomain; + var guardPattern = new QVTi!GuardPattern; + var bottomPattern = new QVTi!BottomPattern; domain.guardPattern = guardPattern; domain.bottomPattern = bottomPattern; return domain; } -operation OCL!ShadowExp createCreationMapping_RightDomain () : QVTi!CoreDomain { - var constructedType = self.type; +operation OCL!Type create_LeftDomain() : QVTi!CoreDomain { + + var domain = createDomain(); + domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= LEFT); + domain.isCheckable = true; - var domain = new QVTi!CoreDomain; + var variable = new QVTi!Variable; + variable.name = self.name.firstToLowerCase(); + variable.type = self; + + domain.guardPattern.variable.add(variable); + return domain; +} + +operation OCL!Type create_RightDomain() : QVTi!CoreDomain { + + var domain = createDomain(); domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= RIGHT); domain.isEnforceable = true; - var guardPattern = new QVTi!GuardPattern; - var bottomPattern = new QVTi!BottomPattern; - var variable = new QVTi!RealizedVariable; - variable.name = constructedType.name.firstToLowerCase(); - variable.type = constructedType; - - bottomPattern.realizedVariable.add(variable); + variable.name = self.name.firstToLowerCase(); + variable.type = self; - domain.guardPattern = guardPattern; - domain.bottomPattern = bottomPattern; + domain.bottomPattern.realizedVariable.add(variable); return domain; } -operation OCL!ShadowExp createUpdateMapping_LeftDomain ( ) : QVTi!CoreDomain { - // It's exactly the same domain as we have for the creation mappings - return self.createCreationMapping_LeftDomain(); +operation OCL!ShadowExp createCreationMapping_LeftDomain ( ) : QVTi!CoreDomain { + var contextType = self.getExpressionContextType(); + return contextType.create_LeftDomain(); } -operation OCL!ShadowExp createUpdateMapping_RightDomain () : QVTi!CoreDomain { +operation OCL!ShadowExp createCreationMapping_RightDomain () : QVTi!CoreDomain { var constructedType = self.type; - - var domain = new QVTi!CoreDomain; + return constructedType.create_RightDomain(); +} + +operation OCL!ShadowExp createUpdateMapping_LeftDomain ( ) : QVTi!CoreDomain { + var contextType = self.getExpressionContextType(); + return contextType.create_LeftDomain(); +} + +operation OCL!ShadowExp createUpdateMapping_RightDomain () : QVTi!CoreDomain { + var domain = createDomain(); + domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= RIGHT); + domain.isEnforceable = true; + return domain; +} + +operation OCL!Operation createUpdateMapping_LeftDomain ( ) : QVTi!CoreDomain { + var contextType = self.getContextType(); + return contextType.create_LeftDomain(); +} + + +operation OCL!Operation createUpdateMapping_RightDomain () : QVTi!CoreDomain { + var domain = createDomain(); domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= RIGHT); domain.isEnforceable = true; - - var guardPattern = new QVTi!GuardPattern; - var bottomPattern = new QVTi!BottomPattern; - - domain.guardPattern = guardPattern; - domain.bottomPattern = bottomPattern; return domain; } -operation OCL!ShadowPart createPropertyAssignmentValue(leftVar : QVTi!Variable) : OCL!OCLExpression { +operation OCL!OCLExpression createPropertyAssignmentValue(leftVar : QVTi!Variable) : OCL!OCLExpression { -- FIXME what happens with synthetised types ???? - var initExp = self.ownedInit; var eUtil = emfTool.getEcoreUtil(); - var newInitExp = eUtil.copy(initExp); + var newExp = eUtil.copy(self); -- We need to replace the OCL refered "self" varible by the QVTi domain "leftVar" and ast op calls - return newInitExp.doReplacements(leftVar); - + return newExp.doReplacements(leftVar); } operation OCL!OCLExpression doReplacements(leftVar : QVTi!Variable) : OCL!OCLExpression { @@ -334,39 +388,54 @@ operation OCL!Element isSelfVarExp() : Boolean { } operation OCL!Element isAstOpCallExp() : Boolean { - return self.isKindOf(OCL!OperationCallExp) and self.referredOperation.name = 'ast'; + return self.isKindOf(OCL!OperationCallExp) and self.referredOperation.isAstOp(); } +operation OCL!Operation isAstOp() : Boolean { + return self.name = 'ast'; +} + +operation OCL!Operation isInvalidOp () : Boolean { + // return not self.bodyExpression.ownedContext.type.isIsAbstract; + return self.bodyExpression.isDefined() and + self.bodyExpression.ownedBody.type = getOclInvalid(); +} operation OCL!ShadowPart getAstCalls() : Collection(OCL!OperationCallExpression) { return self.ownedInit.getAllContents().including(self.ownedInit) - .select(x | x.isKindOf(OCL!OperationCallExp) and x.referredOperation.name = 'ast' ); + .select(x | x.isAstOpCallExp()); } -operation OCL!Type getTraceabilityProperty() : OCL!Property { - // return self.ownedAttribute.selectOne(x | x.name = 'ast'); // FIXME can we parameterize the traceability property name ? - return self.asSequence().closure(x | x.superClasses).ownedProperties.flatten().selectOne(x | x.name = traceabilityPropName); -} +@cached operation getOclAnyEqualsOp() : OCL!Operation { return OclStdLib!Class.all.selectOne(x | x.name = 'OclAny').ownedOperations .selectOne(x | x.name = '='); } +@cached operation getOclMetaClass() : OCL!Class { return OclStdLib!Class.all.selectOne(x | x.name = 'Class'); } +@cached +operation getOclInvalid() : OCL!Class { + return OclStdLib!Class.all.selectOne(x | x.name = 'OclInvalid'); +} + +@cached operation getOclAnyOclAsTypeOp() : OCL!Operation { return OclStdLib!Class.all.selectOne(x | x.name = 'OclAny').ownedOperations .selectOne(x | x.name = 'oclAsType'); } +@cached operation getBooleanPrimitiveType() : OCL!PrimitiveType { return OclStdLib!PrimitiveType.all.selectOne(x | x.name = 'Boolean'); } +@cached operation getBooleanNotOp() : OCL!Operation { return OclStdLib!Class.all.selectOne(x | x.name = 'Boolean').ownedOperations .selectOne(x | x.name = 'not'); diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.ocl b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.ocl index ac4d46694..2cdd9057c 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.ocl +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.ocl @@ -3,18 +3,19 @@ import 'TargetMM1.ecore' import 'SourceDisambiguation.ocl' import 'TargetLookup.ocl' - package source +context SElement +def : ast() : target::Visitable = + invalid -- To be overriden by subtypes + context SRoot def : ast() : target::TRoot = target::TRoot { ownedA = ownedX.ast() } -context X -def : ast() : target::A = - invalid -- To be overriden + context X def : ast() : target::A = @@ -47,22 +48,46 @@ def : ast() : target::C = ownsD = ownsZ.ast(), name = name } - -context Z -def : ast() : target::D = - invalid -- To be overriden context Z def : ast() : target::D = - if toY.oclIsKindOf(source::Y1) + if toY.oclIsKindOf(Y1) then target::D { - toA = toY.oclAsType(source::Y1).ast().toA1, - refsB = ast().lookupB(self) + toA = toY.oclAsType(Y1).ast().toA1, + refsB = if refers = null + then null + else refers.ast().oclAsType(target::B) + endif } else target::D { - toA = toY.oclAsType(source::Y2).ast().toA2, - refsC = ast().lookupC(self) + toA = toY.oclAsType(Y2).ast().toA2, + refsC = if refers = null + then null + else refers.ast().oclAsType(target::C) + endif } endif + +context PathNameCS +def : ast() : target::NamedElement = + path->at(path->size()).ast() +context PathElementCS +def : ast() : target::NamedElement = + let path = pathName.path, + lookupContext = pathName.oclContainer().oclAsType(SElement).ast(), + first = path->at(1), + last = path->at(path->size()) + in if self = first -- A lookup for the first path element, will be non local lookup + then if self = last + then lookupContext._lookupNamedElement(self, false) + else lookupContext._lookupNamespace(self, false) + endif + else -- else, we will perform a local lookup in the referred element of the previous PathElementCS + let prevPathElement = path->at(path->indexOf(self)-1) + in if self = last + then prevPathElement.ast()._lookupNamedElement(self, true) + else prevPathElement.ast()._lookupNamespace(self, true) + endif + endif endpackage diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtias b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtias index 4d0c803f2..693328d38 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtias +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtias @@ -915,16 +915,32 @@ </value> </assignment> <assignment xsi:type="qvtcb:VariableAssignment" targetVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.bottom._1"> - <value xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.C" referredOperation="TargetLookup.ocl.oclas#o.target.D.lookupC..source.Z"> - <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> - <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" - referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <value xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.C"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers"> <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/> </ownedSource> + <ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/> + </ownedCondition> + <ownedElse xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.C" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </ownedSource> <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" - referredType="pivot:Class TargetMM1.ecore.oclas#T.target.D"/> - </ownedSource> - <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/> + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.C"/> + </ownedElse> + <ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/> </value> </assignment> <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="TargetMM1.ecore.oclas#p.target.D.refsC"> @@ -1028,16 +1044,32 @@ </value> </assignment> <assignment xsi:type="qvtcb:VariableAssignment" targetVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.bottom._1"> - <value xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.B" referredOperation="TargetLookup.ocl.oclas#o.target.D.lookupB..source.Z"> - <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> - <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" - referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <value xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.B"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers"> <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/> </ownedSource> + <ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/> + </ownedCondition> + <ownedElse xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.B" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </ownedSource> <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" - referredType="pivot:Class TargetMM1.ecore.oclas#T.target.D"/> - </ownedSource> - <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/> + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.B"/> + </ownedElse> + <ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/> </value> </assignment> <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="TargetMM1.ecore.oclas#p.target.D.refsB"> @@ -1046,12 +1078,228 @@ </assignment> </bottomPattern> </rule> + <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.uPathElementCS_ast" name="uPathElementCS_ast"> + <domain xsi:type="qvtcb:CoreDomain" name="leftCS" isCheckable="true" isEnforceable="false" typedModel="#qT..Source2Target_qvtp_qvtias.leftCS"> + <guardPattern> + <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS" name="pathElementCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"/> + </guardPattern> + <bottomPattern/> + </domain> + <domain xsi:type="qvtcb:CoreDomain" name="rightAS" isCheckable="false" isEnforceable="true" typedModel="#qT..Source2Target_qvtp_qvtias.rightAS"> + <guardPattern/> + <bottomPattern/> + </domain> + <guardPattern/> + <bottomPattern> + <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.bottom._0" name="_0" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + <assignment xsi:type="qvtcb:VariableAssignment" targetVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.bottom._0"> + <value xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedVariable"/> + </ownedCondition> + <ownedElse xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedVariable"/> + </ownedCondition> + <ownedElse xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Namespace" + referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamespace..source.PathElementCS..ocl.Boolean"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedIn/@ownedElse/@ownedVariable"/> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </ownedSource> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + booleanSymbol="true"/> + </ownedElse> + <ownedThen xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" + referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamedElement..source.PathElementCS..ocl.Boolean"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedIn/@ownedElse/@ownedVariable"/> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </ownedSource> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + booleanSymbol="true"/> + </ownedThen> + </ownedIn> + <ownedVariable name="prevPathElement" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + <ownedArguments xsi:type="pivot:OperationCallExp" name="-" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Integer.%45%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.indexOf..ocl.OclAny"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + </ownedSource> + <ownedArguments xsi:type="pivot:IntegerLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + integerSymbol="1"/> + </ownedArguments> + </ownedInit> + </ownedVariable> + </ownedElse> + <ownedThen xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedVariable"/> + </ownedCondition> + <ownedElse xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Namespace" + referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamespace..source.PathElementCS..ocl.Boolean"> + <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedVariable"/> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + booleanSymbol="false"/> + </ownedElse> + <ownedThen xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" + referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamedElement..source.PathElementCS..ocl.Boolean"> + <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedVariable"/> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + booleanSymbol="false"/> + </ownedThen> + </ownedThen> + </ownedIn> + <ownedVariable name="last" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + <ownedArguments xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Collection.size"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + </ownedArguments> + </ownedInit> + </ownedVariable> + </ownedIn> + <ownedVariable name="first" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + <ownedArguments xsi:type="pivot:IntegerLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + integerSymbol="1"/> + </ownedInit> + </ownedVariable> + </ownedIn> + <ownedVariable name="lookupContext" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"> + <ownedInit xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.SElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclElement" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.oclContainer"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class SourceMM1.ecore.oclas#T.source.SElement"/> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"/> + </ownedInit> + </ownedVariable> + </ownedIn> + <ownedVariable name="path" type="#//@ownedPackages.1/@ownedClasses.7"> + <ownedInit xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + </ownedSource> + </ownedInit> + </ownedVariable> + </value> + </assignment> + <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <value xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.bottom._0"/> + <slotExpression xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + </assignment> + </bottomPattern> + </rule> + <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.uPathNameCS_ast" name="uPathNameCS_ast"> + <domain xsi:type="qvtcb:CoreDomain" name="leftCS" isCheckable="true" isEnforceable="false" typedModel="#qT..Source2Target_qvtp_qvtias.leftCS"> + <guardPattern> + <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS" name="pathNameCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"/> + </guardPattern> + <bottomPattern/> + </domain> + <domain xsi:type="qvtcb:CoreDomain" name="rightAS" isCheckable="false" isEnforceable="true" typedModel="#qT..Source2Target_qvtp_qvtias.rightAS"> + <guardPattern/> + <bottomPattern/> + </domain> + <guardPattern/> + <bottomPattern> + <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.bottom._0" name="_0" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + <assignment xsi:type="qvtcb:VariableAssignment" targetVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.bottom._0"> + <value xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/> + </ownedSource> + <ownedArguments xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Collection.size"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/> + </ownedSource> + </ownedArguments> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </value> + </assignment> + <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <value xsi:type="pivot:VariableExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.bottom._0"/> + <slotExpression xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/> + </assignment> + </bottomPattern> + </rule> <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.__root__" name="__root__"> <guardPattern/> <bottomPattern/> <mappingStatement xsi:type="qvti:MappingSequence"> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1064,7 +1312,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.0.sRoot" name="sRoot" type="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1077,7 +1325,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.1.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1090,7 +1338,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.2.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1103,7 +1351,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.3.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1116,7 +1364,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.4.sRoot" name="sRoot" type="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1129,7 +1377,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.5.y1" name="y1" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1142,7 +1390,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.6.y2" name="y2" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1155,7 +1403,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.7.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1168,7 +1416,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.8.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1181,7 +1429,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.9.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1194,7 +1442,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.10.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1207,7 +1455,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.11.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1220,7 +1468,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.12.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1233,7 +1481,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.13.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1246,7 +1494,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.14.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1259,7 +1507,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.15.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1272,7 +1520,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.16.y1" name="y1" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1285,7 +1533,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.17.y1" name="y1" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1298,7 +1546,7 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.18.y2" name="y2" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> @@ -1311,43 +1559,69 @@ <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.19.y2" name="y2" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.13" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"/> + </ownedSource> + <ownedBody xsi:type="qvti:MappingSequence"> + <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uPathElementCS_ast"> + <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"> + <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.20.pathElementCS"/> + </binding> + </mappingStatements> + </ownedBody> + <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.20.pathElementCS" name="pathElementCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"/> + </mappingStatements> + <mappingStatements xsi:type="qvti:MappingLoop"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.14" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"/> + </ownedSource> + <ownedBody xsi:type="qvti:MappingSequence"> + <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uPathNameCS_ast"> + <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"> + <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.21.pathNameCS"/> + </binding> + </mappingStatements> + </ownedBody> + <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.21.pathNameCS" name="pathNameCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"/> + </mappingStatements> + <mappingStatements xsi:type="qvti:MappingLoop"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uD_1_refsB"> <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"> - <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.20.z"/> + <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.22.z"/> </binding> </mappingStatements> </ownedBody> - <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.20.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> + <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.22.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uD_0_refsC"> <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"> - <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.21.z"/> + <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.23.z"/> </binding> </mappingStatements> </ownedBody> - <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.21.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> + <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.23.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </mappingStatements> <mappingStatements xsi:type="qvti:MappingLoop"> - <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> + <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances"> <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </ownedSource> <ownedBody xsi:type="qvti:MappingSequence"> <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uD_1_toA"> <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uD_1_toA.leftCS.guard.z"> - <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.22.z"/> + <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.24.z"/> </binding> </mappingStatements> </ownedBody> - <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.22.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> + <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.24.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/> </mappingStatements> </mappingStatement> </rule> @@ -1355,140 +1629,176 @@ </ownedClasses> </ownedPackages> <ownedPackages xmi:id="P.$$" name="$$" URI="http://www.eclipse.org/ocl/2015/Orphanage" nsPrefix="orphanage"> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.12" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.15" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.A" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.13 #//@ownedPackages.1/@ownedClasses.14" + <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.16 #//@ownedPackages.1/@ownedClasses.17" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.15" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C"> + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.18" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.C" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.16" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.19" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" isNullFree="true"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.17 #//@ownedPackages.1/@ownedClasses.18" + <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.20 #//@ownedPackages.1/@ownedClasses.21" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.19" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B"> + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.22" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.B" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.23" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" isNullFree="true"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.21" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"> + <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.24 #//@ownedPackages.1/@ownedClasses.25" + elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.26" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.22" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> + <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.27" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.23" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"> + <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.28" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.24" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"> + <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.29" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.25" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"> + <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.30" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Z" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.26" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> + <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.31" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.32" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.33" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.A" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.27" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.34" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.27" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.34" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.28" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.35" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.C" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.29" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.36" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.30" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.37" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.30" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.37" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.31" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.38" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.B" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.32" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.39" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.33" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.40" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.40" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.41" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.34" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.42" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.35" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.43" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.36" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.44" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.37" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.45" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Z" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> </ownedBindings> </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.46" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.47" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> + </ownedBindings> + </ownedClasses> <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> <ownedBindings> @@ -1532,6 +1842,12 @@ </ownedBindings> </ownedClasses> <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny" + elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/> @@ -1561,5 +1877,17 @@ <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Z" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/> </ownedBindings> </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny" + elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny" + elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/> + </ownedBindings> + </ownedClasses> </ownedPackages> </qvti:ImperativeModel> diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtp.qvtias b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtp.qvtias index c24ce1ee3..4c660dde8 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtp.qvtias +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtp.qvtias @@ -799,16 +799,32 @@ </guardPattern> <bottomPattern> <assignment xsi:type="qvtcb:PropertyAssignment" targetProperty="TargetMM1.ecore.oclas#p.target.D.refsC"> - <value xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.C" referredOperation="TargetLookup.ocl.oclas#o.target.D.lookupC..source.Z"> - <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> - <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" - referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <value xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.C"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers"> <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/> </ownedSource> + <ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/> + </ownedCondition> + <ownedElse xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.C" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </ownedSource> <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" - referredType="pivot:Class TargetMM1.ecore.oclas#T.target.D"/> - </ownedSource> - <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/> + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.C"/> + </ownedElse> + <ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/> </value> <slotExpression xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" @@ -896,16 +912,32 @@ </guardPattern> <bottomPattern> <assignment xsi:type="qvtcb:PropertyAssignment" targetProperty="TargetMM1.ecore.oclas#p.target.D.refsB"> - <value xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.B" referredOperation="TargetLookup.ocl.oclas#o.target.D.lookupB..source.Z"> - <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> - <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" - referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <value xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.B"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers"> <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/> </ownedSource> + <ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/> + </ownedCondition> + <ownedElse xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.B" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </ownedSource> <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" - referredType="pivot:Class TargetMM1.ecore.oclas#T.target.D"/> - </ownedSource> - <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/> + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.B"/> + </ownedElse> + <ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/> </value> <slotExpression xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" @@ -917,93 +949,317 @@ </assignment> </bottomPattern> </rule> + <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.uPathElementCS_ast" name="uPathElementCS_ast"> + <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" typedModel="#qT..Source2Target_qvtp_qvtias.leftCS"> + <guardPattern> + <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS" name="pathElementCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"/> + </guardPattern> + <bottomPattern/> + </domain> + <domain xsi:type="qvtcb:CoreDomain" isEnforceable="true" typedModel="#qT..Source2Target_qvtp_qvtias.rightAS"> + <guardPattern/> + <bottomPattern/> + </domain> + <guardPattern/> + <bottomPattern> + <assignment xsi:type="qvtcb:PropertyAssignment" targetProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <value xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedVariable"/> + </ownedCondition> + <ownedElse xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedIn xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedVariable"/> + </ownedCondition> + <ownedElse xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Namespace" + referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamespace..source.PathElementCS..ocl.Boolean"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedIn/@ownedElse/@ownedVariable"/> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </ownedSource> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + booleanSymbol="true"/> + </ownedElse> + <ownedThen xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" + referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamedElement..source.PathElementCS..ocl.Boolean"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedIn/@ownedElse/@ownedVariable"/> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </ownedSource> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + booleanSymbol="true"/> + </ownedThen> + </ownedIn> + <ownedVariable name="prevPathElement" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + <ownedArguments xsi:type="pivot:OperationCallExp" name="-" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Integer.%45%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.indexOf..ocl.OclAny"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + </ownedSource> + <ownedArguments xsi:type="pivot:IntegerLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + integerSymbol="1"/> + </ownedArguments> + </ownedInit> + </ownedVariable> + </ownedElse> + <ownedThen xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"> + <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedVariable"/> + </ownedCondition> + <ownedElse xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Namespace" + referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamespace..source.PathElementCS..ocl.Boolean"> + <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedVariable"/> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + booleanSymbol="false"/> + </ownedElse> + <ownedThen xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" + referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamedElement..source.PathElementCS..ocl.Boolean"> + <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable" + referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedVariable"/> + <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean" + booleanSymbol="false"/> + </ownedThen> + </ownedThen> + </ownedIn> + <ownedVariable name="last" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + <ownedArguments xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Collection.size"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + </ownedArguments> + </ownedInit> + </ownedVariable> + </ownedIn> + <ownedVariable name="first" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer"> + <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/> + <ownedArguments xsi:type="pivot:IntegerLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + integerSymbol="1"/> + </ownedInit> + </ownedVariable> + </ownedIn> + <ownedVariable name="lookupContext" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"> + <ownedInit xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.SElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclElement" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.oclContainer"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class SourceMM1.ecore.oclas#T.source.SElement"/> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" + referredType="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"/> + </ownedInit> + </ownedVariable> + </ownedIn> + <ownedVariable name="path" type="#//@ownedPackages.1/@ownedClasses.7"> + <ownedInit xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path"> + <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" + referredProperty="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + </ownedSource> + </ownedInit> + </ownedVariable> + </value> + <slotExpression xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + </assignment> + </bottomPattern> + </rule> + <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.uPathNameCS_ast" name="uPathNameCS_ast"> + <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" typedModel="#qT..Source2Target_qvtp_qvtias.leftCS"> + <guardPattern> + <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS" name="pathNameCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"/> + </guardPattern> + <bottomPattern/> + </domain> + <domain xsi:type="qvtcb:CoreDomain" isEnforceable="true" typedModel="#qT..Source2Target_qvtp_qvtias.rightAS"> + <guardPattern/> + <bottomPattern/> + </domain> + <guardPattern/> + <bottomPattern> + <assignment xsi:type="qvtcb:PropertyAssignment" targetProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <value xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject" + referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast"> + <ownedSource xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/> + </ownedSource> + <ownedArguments xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer" + referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Collection.size"> + <ownedSource xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path"> + <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" isImplicit="true" + referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/> + </ownedSource> + </ownedArguments> + </ownedSource> + </ownedSource> + <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/> + </value> + <slotExpression xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/> + </assignment> + </bottomPattern> + </rule> </ownedClasses> </ownedPackages> <ownedPackages xmi:id="P.$$" name="$$" URI="http://www.eclipse.org/ocl/2015/Orphanage" nsPrefix="orphanage"> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.7" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.8" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.A" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.8 #//@ownedPackages.1/@ownedClasses.9" + <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.9 #//@ownedPackages.1/@ownedClasses.10" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.10" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C"> + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.11" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.C" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.11" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.12" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" isNullFree="true"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.12 #//@ownedPackages.1/@ownedClasses.13" + <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.13 #//@ownedPackages.1/@ownedClasses.14" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.14" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B"> + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.15" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.B" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.15" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" + <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.16" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" isNullFree="true"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.16" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> + <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.17 #//@ownedPackages.1/@ownedClasses.18" + elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.19" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.A" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.17" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.17" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.18" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.21" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.C" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.19" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.22" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.23" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.23" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.21" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.24" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B"> <ownedBindings> <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.B" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> - <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.22" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.25" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"> <ownedBindings> <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> </ownedBindings> </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.26" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/> + </ownedBindings> + </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.26" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/> + </ownedBindings> + </ownedClasses> <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A"> <ownedBindings> @@ -1046,5 +1302,11 @@ <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/> </ownedBindings> </ownedClasses> + <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny" + elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"> + <ownedBindings> + <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/> + </ownedBindings> + </ownedClasses> </ownedPackages> </qvti:ImperativeModel> diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi index fd4bcfac9..a369acc44 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi @@ -1,9 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <qvts:Schedule xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qvts="http://www.eclipse.org/qvt/2015/Schedule" xsi:schemaLocation="http://www.eclipse.org/qvt/2015/Schedule java://org.eclipse.qvtd.pivot.schedule.SchedulePackage"> - <datums xsi:type="qvts:ClassDatum" sub="//@datums.1 //@datums.3 //@datums.10 //@datums.15 //@datums.17 //@datums.19"> + <datums xsi:type="qvts:ClassDatum" sub="//@datums.1 //@datums.3 //@datums.10 //@datums.15 //@datums.17 //@datums.18"> <type href="SourceMM1.ecore.oclas#T.source.SElement"/> - <propertyDatums sub="//@datums.3/@propertyDatums.0 //@datums.1/@propertyDatums.1 //@datums.10/@propertyDatums.0 //@datums.15/@propertyDatums.1"> + <propertyDatums sub="//@datums.3/@propertyDatums.0 //@datums.1/@propertyDatums.1 //@datums.10/@propertyDatums.0 //@datums.15/@propertyDatums.1 //@datums.18/@propertyDatums.0 //@datums.17/@propertyDatums.0" + requiredBy="//@actions.23"> <property href="SourceMM1.ecore.oclas#p.source.SElement.ast"/> </propertyDatums> </datums> @@ -22,7 +23,7 @@ <datums xsi:type="qvts:ClassDatum" producedBy="//@actions.0" dataParameter="//@actions.0/@results.0"> <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.0/@domain.1"/> <type href="TargetMM1.ecore.oclas#T.target.TRoot"/> - <propertyDatums producedBy="//@actions.8" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.6/@propertyDatums.1"> + <propertyDatums producedBy="//@actions.8" requiredBy="//@actions.23" opposite="//@datums.6/@propertyDatums.1"> <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.0/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.TRoot.ownedA"/> </propertyDatums> @@ -61,7 +62,7 @@ <datums xsi:type="qvts:ClassDatum" super="//@datums.4" sub="//@datums.6 //@datums.12 //@datums.14"> <type href="TargetMM1.ecore.oclas#T.target.Namespace"/> <propertyDatums super="//@datums.4/@propertyDatums.0" sub="//@datums.6/@propertyDatums.0 //@datums.12/@propertyDatums.2 //@datums.14/@propertyDatums.2" - requiredBy="//@actions.20 //@actions.22"> + requiredBy="//@actions.23"> <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/> </propertyDatums> </datums> @@ -84,7 +85,7 @@ <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.2/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/> </propertyDatums> - <propertyDatums sub="//@datums.8/@propertyDatums.1" producedBy="//@actions.12" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.14/@propertyDatums.0"> + <propertyDatums sub="//@datums.8/@propertyDatums.1" producedBy="//@actions.12" requiredBy="//@actions.23" opposite="//@datums.14/@propertyDatums.0"> <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.2/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.A2.ownsC"/> </propertyDatums> @@ -108,7 +109,7 @@ <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.3/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/> </propertyDatums> - <propertyDatums producedBy="//@actions.14" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.12/@propertyDatums.0"> + <propertyDatums producedBy="//@actions.14" requiredBy="//@actions.23" opposite="//@datums.12/@propertyDatums.0"> <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.3/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.A1.ownsB"/> </propertyDatums> @@ -148,11 +149,11 @@ <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.4/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.B.toA1"/> </propertyDatums> - <propertyDatums producedBy="//@actions.15" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.16/@propertyDatums.3"> + <propertyDatums producedBy="//@actions.15" requiredBy="//@actions.23" opposite="//@datums.16/@propertyDatums.3"> <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.4/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.B.ownsD"/> </propertyDatums> - <propertyDatums super="//@datums.5/@propertyDatums.0" producedBy="//@actions.16" requiredBy="//@actions.22"> + <propertyDatums super="//@datums.5/@propertyDatums.0" producedBy="//@actions.16" requiredBy="//@actions.23"> <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.4/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/> </propertyDatums> @@ -184,11 +185,11 @@ <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.5/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.C.toA2"/> </propertyDatums> - <propertyDatums producedBy="//@actions.17" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.16/@propertyDatums.4"> + <propertyDatums producedBy="//@actions.17" requiredBy="//@actions.23" opposite="//@datums.16/@propertyDatums.4"> <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.5/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.C.ownsD"/> </propertyDatums> - <propertyDatums super="//@datums.5/@propertyDatums.0" producedBy="//@actions.18" requiredBy="//@actions.20"> + <propertyDatums super="//@datums.5/@propertyDatums.0" producedBy="//@actions.18"> <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.5/@domain.1"/> <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/> </propertyDatums> @@ -238,28 +239,44 @@ <property href="TargetMM1.ecore.oclas#p.target.D.toC"/> </propertyDatums> </datums> - <datums xsi:type="qvts:ClassDatum" super="//@datums.0"> + <datums xsi:type="qvts:ClassDatum" super="//@datums.0" requiredBy="//@actions.23" dataParameter="//@actions.23/@parameters.0"> + <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.23/@domain.0"/> + <type href="SourceMM1.ecore.oclas#T.source.PathElementCS"/> + <propertyDatums super="//@datums.0/@propertyDatums.0" producedBy="//@actions.23" requiredBy="//@actions.23 //@actions.24"> + <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.23/@domain.0"/> + <property href="SourceMM1.ecore.oclas#p.source.SElement.ast"/> + </propertyDatums> + <propertyDatums requiredBy="//@actions.23"> + <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.23/@domain.0"/> + <property href="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName"/> + </propertyDatums> + <propertyDatums requiredBy="//@actions.23"> + <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.23/@domain.0"/> + <property href="SourceMM1.ecore.oclas#p.source.PathElementCS.name"/> + </propertyDatums> + </datums> + <datums xsi:type="qvts:ClassDatum" super="//@datums.0" requiredBy="//@actions.24" dataParameter="//@actions.24/@parameters.0"> + <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.24/@domain.0"/> <type href="SourceMM1.ecore.oclas#T.source.PathNameCS"/> - <propertyDatums requiredBy="//@actions.20 //@actions.22"> + <propertyDatums super="//@datums.0/@propertyDatums.0" producedBy="//@actions.24" requiredBy="//@actions.20 //@actions.22"> + <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.24/@domain.0"/> + <property href="SourceMM1.ecore.oclas#p.source.SElement.ast"/> + </propertyDatums> + <propertyDatums requiredBy="//@actions.23 //@actions.24"> + <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.24/@domain.0"/> <property href="SourceMM1.ecore.oclas#p.source.PathNameCS.path"/> </propertyDatums> </datums> <datums xsi:type="qvts:ClassDatum"> <type href="EnvExample1.ecore.oclas#T.env.Environment"/> - <propertyDatums requiredBy="//@actions.20 //@actions.22"> + <propertyDatums requiredBy="//@actions.23"> <property href="EnvExample1.ecore.oclas#p.env.Environment.parentEnv"/> </propertyDatums> - <propertyDatums requiredBy="//@actions.20 //@actions.22"> + <propertyDatums requiredBy="//@actions.23"> <property href="EnvExample1.ecore.oclas#p.env.Environment.namedElements"/> </propertyDatums> </datums> - <datums xsi:type="qvts:ClassDatum" super="//@datums.0"> - <type href="SourceMM1.ecore.oclas#T.source.PathElementCS"/> - <propertyDatums requiredBy="//@actions.20 //@actions.22"> - <property href="SourceMM1.ecore.oclas#p.source.PathElementCS.name"/> - </propertyDatums> - </datums> - <actions xsi:type="qvts:MappingAction" productions="//@datums.2 //@datums.1/@propertyDatums.1" requisites="//@datums.1" order="1" parent="//@actions.23"> + <actions xsi:type="qvts:MappingAction" productions="//@datums.2 //@datums.1/@propertyDatums.1" requisites="//@datums.1" order="1" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.0/@parameters.0"/> </parameterDerivations> @@ -272,7 +289,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cSRoot_2_TRoot"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.8 //@datums.3/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4" - order="4" parent="//@actions.23"> + order="4" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.1/@parameters.0"/> </parameterDerivations> @@ -285,7 +302,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cX_2_A3"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.7 //@datums.3/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4" - order="3" parent="//@actions.23"> + order="3" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.2/@parameters.0"/> </parameterDerivations> @@ -298,7 +315,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cX_2_A2"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.9 //@datums.3/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.3" - order="2" parent="//@actions.23"> + order="2" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.3/@parameters.0"/> </parameterDerivations> @@ -311,7 +328,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cX_2_A1"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.12 //@datums.11/@propertyDatums.0" requisites="//@datums.11" order="6" - parent="//@actions.23"> + parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.4/@parameters.0"/> </parameterDerivations> @@ -324,7 +341,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cY1_2_B"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.14 //@datums.13/@propertyDatums.0" requisites="//@datums.13" order="7" - parent="//@actions.23"> + parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.5/@parameters.0"/> </parameterDerivations> @@ -337,7 +354,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cY2_2_C"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.16 //@datums.15/@propertyDatums.1" requisites="//@datums.15 //@datums.15/@propertyDatums.0" - order="8" parent="//@actions.23"> + order="8" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.6/@parameters.0"/> </parameterDerivations> @@ -350,7 +367,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cZ_2_D_0"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.16 //@datums.15/@propertyDatums.1" requisites="//@datums.15 //@datums.15/@propertyDatums.0" - order="9" parent="//@actions.23"> + order="9" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.7/@parameters.0"/> </parameterDerivations> @@ -363,7 +380,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cZ_2_D_1"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.2/@propertyDatums.0 //@datums.6/@propertyDatums.1" requisites="//@datums.1 //@datums.1/@propertyDatums.0 //@datums.3/@propertyDatums.0 //@datums.1/@propertyDatums.1" - order="5" parent="//@actions.23"> + order="5" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.8/@parameters.0"/> </parameterDerivations> @@ -373,7 +390,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uTRoot_ownedA"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.8/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.1 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4" - order="16" parent="//@actions.23"> + order="16" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.9/@parameters.0"/> </parameterDerivations> @@ -383,7 +400,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA3_name"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.8/@propertyDatums.1 //@datums.14/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.2 //@datums.13/@propertyDatums.0 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4" - order="11" parent="//@actions.23"> + order="11" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.10/@parameters.0"/> </parameterDerivations> @@ -393,7 +410,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA3_ownsC"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.7/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.1 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4" - order="15" parent="//@actions.23"> + order="15" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.11/@parameters.0"/> </parameterDerivations> @@ -403,7 +420,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA2_name"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.7/@propertyDatums.1 //@datums.14/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.2 //@datums.13/@propertyDatums.0 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4" - order="10" parent="//@actions.23"> + order="10" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.12/@parameters.0"/> </parameterDerivations> @@ -413,7 +430,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA2_ownsC"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.9/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.1 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3" - order="13" parent="//@actions.23"> + order="13" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.13/@parameters.0"/> </parameterDerivations> @@ -423,7 +440,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA1_name"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.9/@propertyDatums.1 //@datums.12/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.2 //@datums.11/@propertyDatums.0 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3" - order="14" parent="//@actions.23"> + order="14" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.14/@parameters.0"/> </parameterDerivations> @@ -433,7 +450,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA1_ownsB"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.12/@propertyDatums.1 //@datums.16/@propertyDatums.3" requisites="//@datums.11 //@datums.15/@propertyDatums.1 //@datums.11/@propertyDatums.1 //@datums.11/@propertyDatums.0" - order="17" parent="//@actions.23"> + order="17" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.15/@parameters.0"/> </parameterDerivations> @@ -443,7 +460,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uB_ownsD"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.12/@propertyDatums.2" requisites="//@datums.11 //@datums.11/@propertyDatums.2 //@datums.11/@propertyDatums.0" - order="18" parent="//@actions.23"> + order="18" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.16/@parameters.0"/> </parameterDerivations> @@ -453,7 +470,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uB_name"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.14/@propertyDatums.1 //@datums.16/@propertyDatums.4" requisites="//@datums.13 //@datums.15/@propertyDatums.1 //@datums.13/@propertyDatums.1 //@datums.13/@propertyDatums.0" - order="20" parent="//@actions.23"> + order="20" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.17/@parameters.0"/> </parameterDerivations> @@ -463,7 +480,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uC_ownsD"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.14/@propertyDatums.2" requisites="//@datums.13 //@datums.13/@propertyDatums.2 //@datums.13/@propertyDatums.0" - order="19" parent="//@actions.23"> + order="19" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.18/@parameters.0"/> </parameterDerivations> @@ -473,7 +490,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uC_name"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.0 //@datums.6/@propertyDatums.2" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.14/@propertyDatums.0 //@datums.13/@propertyDatums.0 //@datums.15/@propertyDatums.1" - order="12" parent="//@actions.23"> + order="12" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.19/@parameters.0"/> </parameterDerivations> @@ -482,8 +499,8 @@ </parameters> <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uD_0_toA"/> </actions> - <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.1 //@datums.14/@propertyDatums.3" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.15/@propertyDatums.1 //@datums.15/@propertyDatums.2 //@datums.17/@propertyDatums.0 //@datums.18/@propertyDatums.0 //@datums.18/@propertyDatums.1 //@datums.5/@propertyDatums.0 //@datums.19/@propertyDatums.0 //@datums.2/@propertyDatums.0 //@datums.9/@propertyDatums.1 //@datums.7/@propertyDatums.1 //@datums.12/@propertyDatums.1 //@datums.14/@propertyDatums.1 //@datums.14/@propertyDatums.2" - order="22" parent="//@actions.23"> + <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.1 //@datums.14/@propertyDatums.3" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.15/@propertyDatums.2 //@datums.18/@propertyDatums.0 //@datums.15/@propertyDatums.1" + order="24" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.20/@parameters.0"/> </parameterDerivations> @@ -493,7 +510,7 @@ <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uD_0_refsC"/> </actions> <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.0" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.12/@propertyDatums.0 //@datums.11/@propertyDatums.0 //@datums.15/@propertyDatums.1" - order="23" parent="//@actions.23"> + order="25" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.21/@parameters.0"/> </parameterDerivations> @@ -502,8 +519,8 @@ </parameters> <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uD_1_toA"/> </actions> - <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.2 //@datums.12/@propertyDatums.3" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.15/@propertyDatums.1 //@datums.15/@propertyDatums.2 //@datums.17/@propertyDatums.0 //@datums.18/@propertyDatums.0 //@datums.18/@propertyDatums.1 //@datums.5/@propertyDatums.0 //@datums.19/@propertyDatums.0 //@datums.2/@propertyDatums.0 //@datums.9/@propertyDatums.1 //@datums.7/@propertyDatums.1 //@datums.12/@propertyDatums.1 //@datums.14/@propertyDatums.1 //@datums.12/@propertyDatums.2" - order="21" parent="//@actions.23"> + <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.2 //@datums.12/@propertyDatums.3" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.15/@propertyDatums.2 //@datums.18/@propertyDatums.0 //@datums.15/@propertyDatums.1" + order="23" parent="//@actions.25"> <parameterDerivations> <secondaryParameter isLoop="true" dataParameter="//@actions.22/@parameters.0"/> </parameterDerivations> @@ -512,5 +529,25 @@ </parameters> <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uD_1_refsB"/> </actions> - <actions xsi:type="qvts:MappingAction" children="//@actions.0 //@actions.3 //@actions.2 //@actions.1 //@actions.8 //@actions.4 //@actions.5 //@actions.6 //@actions.7 //@actions.12 //@actions.10 //@actions.19 //@actions.13 //@actions.14 //@actions.11 //@actions.9 //@actions.15 //@actions.16 //@actions.18 //@actions.17 //@actions.22 //@actions.20 //@actions.21"/> + <actions xsi:type="qvts:MappingAction" productions="//@datums.17/@propertyDatums.0" requisites="//@datums.17 //@datums.17/@propertyDatums.0 //@datums.0/@propertyDatums.0 //@datums.17/@propertyDatums.1 //@datums.18/@propertyDatums.1 //@datums.19/@propertyDatums.0 //@datums.19/@propertyDatums.1 //@datums.5/@propertyDatums.0 //@datums.17/@propertyDatums.2 //@datums.2/@propertyDatums.0 //@datums.9/@propertyDatums.1 //@datums.7/@propertyDatums.1 //@datums.12/@propertyDatums.1 //@datums.14/@propertyDatums.1 //@datums.12/@propertyDatums.2" + order="21" parent="//@actions.25"> + <parameterDerivations> + <secondaryParameter isLoop="true" dataParameter="//@actions.23/@parameters.0"/> + </parameterDerivations> + <parameters secondaryParameter="//@actions.23/@parameterDerivations.0/@secondaryParameter" datum="//@datums.17"> + <variable href="Source2Target.qvtp.qvtias#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/> + </parameters> + <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uPathElementCS_ast"/> + </actions> + <actions xsi:type="qvts:MappingAction" productions="//@datums.18/@propertyDatums.0" requisites="//@datums.18 //@datums.17/@propertyDatums.0 //@datums.18/@propertyDatums.1" + order="22" parent="//@actions.25"> + <parameterDerivations> + <secondaryParameter isLoop="true" dataParameter="//@actions.24/@parameters.0"/> + </parameterDerivations> + <parameters secondaryParameter="//@actions.24/@parameterDerivations.0/@secondaryParameter" datum="//@datums.18"> + <variable href="Source2Target.qvtp.qvtias#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/> + </parameters> + <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uPathNameCS_ast"/> + </actions> + <actions xsi:type="qvts:MappingAction" children="//@actions.0 //@actions.3 //@actions.2 //@actions.1 //@actions.8 //@actions.4 //@actions.5 //@actions.6 //@actions.7 //@actions.12 //@actions.10 //@actions.19 //@actions.13 //@actions.14 //@actions.11 //@actions.9 //@actions.15 //@actions.16 //@actions.18 //@actions.17 //@actions.23 //@actions.24 //@actions.22 //@actions.20 //@actions.21"/> </qvts:Schedule> diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/SourceMM1.ecore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/SourceMM1.ecore index 9ef6a31ef..c81bbe8eb 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/SourceMM1.ecore +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/SourceMM1.ecore @@ -25,14 +25,17 @@ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedX" upperBound="-1" eType="#//X" containment="true"/> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="SElement"> + <eClassifiers xsi:type="ecore:EClass" name="SElement" abstract="true"> <eStructuralFeatures xsi:type="ecore:EReference" name="ast" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="PathNameCS" eSuperTypes="#//SElement"> <eStructuralFeatures xsi:type="ecore:EReference" name="path" lowerBound="1" upperBound="-1" - eType="#//PathElementCS" containment="true"/> + eType="#//PathElementCS" containment="true" eOpposite="#//PathElementCS/pathName"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="context" eType="#//SElement"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="PathElementCS" eSuperTypes="#//SElement"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="pathName" eType="#//PathNameCS" + eOpposite="#//PathNameCS/path"/> </eClassifiers> </ecore:EPackage> diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl index 2d2b4cb3c..460443265 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl @@ -49,6 +49,20 @@ package target context Visitable +def: _lookupNamedElements(env : env::Environment, path : source::PathElementCS, local : Boolean) : NamedElement[*] = + let foundNSs = env.namedElements->selectByKind(B)->select(name = path.name) + in if foundNSs->isEmpty() and not (env.parentEnv = null) and not local + then _lookupNamedElements(env.parentEnv, path, local) + else foundNSs->asSet() + endif + +def : _lookupNamedElement(path : source::PathElementCS, local : Boolean) : NamedElement[?] = + let foundNSs = _lookupNamedElements(env(), path, local) + in if foundNSs->isEmpty() + then null + else foundNSs->any(true) -- LookupVisitor will report ambiguous result + endif + def : _lookupNamespaces(env : env::Environment, path : source::PathElementCS, local : Boolean) : Namespace[*] = let foundNS = env.namedElements->selectByKind(Namespace)->select(name = path.name) in if foundNS->isEmpty() and not (env.parentEnv = null) and not local @@ -69,60 +83,59 @@ def : lookupNamespace(pathSeq : OrderedSet(source::PathElementCS)) : Namespace[? else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupNamespace(pathSeq->last(), true) endif -def: _lookupBs(env : env::Environment, path : source::PathElementCS, local : Boolean) : B[*] = - let foundBs = env.namedElements->selectByKind(B)->select(name = path.name) - in if foundBs->isEmpty() and not (env.parentEnv = null) and not local - then _lookupBs(env.parentEnv, path, local) - else foundBs->asSet() - endif - -def : _lookupB(path : source::PathElementCS, local : Boolean) : B[?] = - let foundBs = _lookupBs(env(), path, local) - in if foundBs->isEmpty() - then null - else foundBs->any(true) -- LookupVisitor will report ambiguous result - endif - -def : lookupB(pathSeq : OrderedSet(source::PathElementCS)) : B[?] = - if pathSeq->size() = 1 - then _lookupB(pathSeq->first(), false) - else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupB(pathSeq->last(), true) - endif - - -def: _lookupCs(env : env::Environment, path : source::PathElementCS, local : Boolean) : C[*] = - let foundCs = env.namedElements->selectByKind(C)->select(name = path.name) - in if foundCs->isEmpty() and not (env.parentEnv = null) and not local - then _lookupCs(env.parentEnv, path, local) - else foundCs->asSet() - endif - -def : _lookupC(path : source::PathElementCS, local : Boolean) : C[?] = - let foundCs = _lookupCs(env(), path, local) - in if foundCs->isEmpty() - then null - else foundCs->any(true) -- LookupVisitor will report ambiguous result - endif - -def : lookupC(pathSeq : OrderedSet(source::PathElementCS)) : C[?] = - if pathSeq->size() = 1 - then _lookupC(pathSeq->first(), false) - else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupC(pathSeq->last(), true) - endif - -context D -def : lookupB(z : source::Z) : B = - if z.refers = null - then null - else lookupB(z.refers.path) - endif - -def : lookupC(z : source::Z) : C = - if z.refers = null - then null - else lookupC(z.refers.path) - endif - +--def: _lookupBs(env : env::Environment, path : source::PathElementCS, local : Boolean) : B[*] = +-- let foundBs = env.namedElements->selectByKind(B)->select(name = path.name) +-- in if foundBs->isEmpty() and not (env.parentEnv = null) and not local +-- then _lookupBs(env.parentEnv, path, local) +-- else foundBs->asSet() +-- endif +-- +--def : _lookupB(path : source::PathElementCS, local : Boolean) : B[?] = +-- let foundBs = _lookupBs(env(), path, local) +-- in if foundBs->isEmpty() +-- then null +-- else foundBs->any(true) -- LookupVisitor will report ambiguous result +-- endif +-- +--def : lookupB(pathSeq : OrderedSet(source::PathElementCS)) : B[?] = +-- if pathSeq->size() = 1 +-- then _lookupB(pathSeq->first(), false) +-- else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupB(pathSeq->last(), true) +-- endif +-- +-- +--def: _lookupCs(env : env::Environment, path : source::PathElementCS, local : Boolean) : C[*] = +-- let foundCs = env.namedElements->selectByKind(C)->select(name = path.name) +-- in if foundCs->isEmpty() and not (env.parentEnv = null) and not local +-- then _lookupCs(env.parentEnv, path, local) +-- else foundCs->asSet() +-- endif +-- +--def : _lookupC(path : source::PathElementCS, local : Boolean) : C[?] = +-- let foundCs = _lookupCs(env(), path, local) +-- in if foundCs->isEmpty() +-- then null +-- else foundCs->any(true) -- LookupVisitor will report ambiguous result +-- endif +-- +--def : lookupC(pathSeq : OrderedSet(source::PathElementCS)) : C[?] = +-- if pathSeq->size() = 1 +-- then _lookupC(pathSeq->first(), false) +-- else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupC(pathSeq->last(), true) +-- endif +-- +--context D +--def : lookupB(z : source::Z) : B = +-- if z.refers = null +-- then null +-- else lookupB(z.refers.path) +-- endif +-- +--def : lookupC(z : source::Z) : C = +-- if z.refers = null +-- then null +-- else lookupC(z.refers.path) +-- endif context TRoot def : _env(child : ocl::OclElement) : env::Environment = diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetDependencies.graphml b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetDependencies.graphml index 0610ef533..7c0c1ee0e 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetDependencies.graphml +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetDependencies.graphml @@ -1057,10 +1057,10 @@ <data key="d5"/> <data key="d6"> <y:ShapeNode> - <y:Geometry height="17.04" width="80.94" x="0.0" y="0.0"/> + <y:Geometry height="17.04" width="93.72" x="0.0" y="0.0"/> <y:Fill color="#eee8d5" transparent="false"/> - <y:BorderStyle color="#586e75" type="line" width="1.0"/> - <y:NodeLabel textColor="#586e75">PathNameCS</y:NodeLabel> + <y:BorderStyle color="#268bd2" type="line" width="1.0"/> + <y:NodeLabel textColor="#268bd2">PathElementCS</y:NodeLabel> <y:Shape type="rectangle"/> </y:ShapeNode> </data> @@ -1069,16 +1069,16 @@ <data key="d5"/> <data key="d6"> <y:ShapeNode> - <y:Geometry height="34.08" width="80.94" x="0.0" y="0.0"/> + <y:Geometry height="34.08" width="93.72" x="0.0" y="0.0"/> <y:Fill color="#eee8d5" transparent="false"/> - <y:BorderStyle color="#586e75" type="line" width="1.0"/> - <y:NodeLabel textColor="#586e75">PathNameCS -.path</y:NodeLabel> + <y:BorderStyle color="#268bd2" type="line" width="1.0"/> + <y:NodeLabel textColor="#268bd2">PathElementCS +.ast</y:NodeLabel> <y:Shape type="rectangle"/> </y:ShapeNode> </data> </node> - <edge id="e32" source="n62" target="n0"> + <edge id="e32" source="n63" target="n1"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#93a1a1" type="dotted" width="1.0"/> @@ -1090,10 +1090,11 @@ <data key="d5"/> <data key="d6"> <y:ShapeNode> - <y:Geometry height="17.04" width="73.485" x="0.0" y="0.0"/> + <y:Geometry height="34.08" width="93.72" x="0.0" y="0.0"/> <y:Fill color="#eee8d5" transparent="false"/> - <y:BorderStyle color="#586e75" type="line" width="1.0"/> - <y:NodeLabel textColor="#586e75">Environment</y:NodeLabel> + <y:BorderStyle color="#268bd2" type="line" width="1.0"/> + <y:NodeLabel textColor="#268bd2">PathElementCS +.pathName</y:NodeLabel> <y:Shape type="rectangle"/> </y:ShapeNode> </data> @@ -1102,24 +1103,31 @@ <data key="d5"/> <data key="d6"> <y:ShapeNode> - <y:Geometry height="34.08" width="73.485" x="0.0" y="0.0"/> + <y:Geometry height="34.08" width="93.72" x="0.0" y="0.0"/> <y:Fill color="#eee8d5" transparent="false"/> - <y:BorderStyle color="#586e75" type="line" width="1.0"/> - <y:NodeLabel textColor="#586e75">Environment -.parentEnv</y:NodeLabel> + <y:BorderStyle color="#268bd2" type="line" width="1.0"/> + <y:NodeLabel textColor="#268bd2">PathElementCS +.name</y:NodeLabel> <y:Shape type="rectangle"/> </y:ShapeNode> </data> </node> + <edge id="e33" source="n62" target="n0"> + <data key="d9"> + <y:PolyLineEdge> + <y:LineStyle color="#93a1a1" type="dotted" width="1.0"/> + <y:Arrows source="none" target="delta"/> + </y:PolyLineEdge> + </data> + </edge> <node id="n66"> <data key="d5"/> <data key="d6"> <y:ShapeNode> - <y:Geometry height="34.08" width="101.175" x="0.0" y="0.0"/> + <y:Geometry height="17.04" width="80.94" x="0.0" y="0.0"/> <y:Fill color="#eee8d5" transparent="false"/> - <y:BorderStyle color="#586e75" type="line" width="1.0"/> - <y:NodeLabel textColor="#586e75">Environment -.namedElements</y:NodeLabel> + <y:BorderStyle color="#268bd2" type="line" width="1.0"/> + <y:NodeLabel textColor="#268bd2">PathNameCS</y:NodeLabel> <y:Shape type="rectangle"/> </y:ShapeNode> </data> @@ -1128,28 +1136,37 @@ <data key="d5"/> <data key="d6"> <y:ShapeNode> - <y:Geometry height="17.04" width="93.72" x="0.0" y="0.0"/> + <y:Geometry height="34.08" width="80.94" x="0.0" y="0.0"/> <y:Fill color="#eee8d5" transparent="false"/> - <y:BorderStyle color="#586e75" type="line" width="1.0"/> - <y:NodeLabel textColor="#586e75">PathElementCS</y:NodeLabel> + <y:BorderStyle color="#268bd2" type="line" width="1.0"/> + <y:NodeLabel textColor="#268bd2">PathNameCS +.ast</y:NodeLabel> <y:Shape type="rectangle"/> </y:ShapeNode> </data> </node> + <edge id="e34" source="n67" target="n1"> + <data key="d9"> + <y:PolyLineEdge> + <y:LineStyle color="#93a1a1" type="dotted" width="1.0"/> + <y:Arrows source="none" target="delta"/> + </y:PolyLineEdge> + </data> + </edge> <node id="n68"> <data key="d5"/> <data key="d6"> <y:ShapeNode> - <y:Geometry height="34.08" width="93.72" x="0.0" y="0.0"/> + <y:Geometry height="34.08" width="80.94" x="0.0" y="0.0"/> <y:Fill color="#eee8d5" transparent="false"/> - <y:BorderStyle color="#586e75" type="line" width="1.0"/> - <y:NodeLabel textColor="#586e75">PathElementCS -.name</y:NodeLabel> + <y:BorderStyle color="#268bd2" type="line" width="1.0"/> + <y:NodeLabel textColor="#268bd2">PathNameCS +.path</y:NodeLabel> <y:Shape type="rectangle"/> </y:ShapeNode> </data> </node> - <edge id="e33" source="n67" target="n0"> + <edge id="e35" source="n66" target="n0"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#93a1a1" type="dotted" width="1.0"/> @@ -1161,6 +1178,44 @@ <data key="d5"/> <data key="d6"> <y:ShapeNode> + <y:Geometry height="17.04" width="73.485" x="0.0" y="0.0"/> + <y:Fill color="#eee8d5" transparent="false"/> + <y:BorderStyle color="#586e75" type="line" width="1.0"/> + <y:NodeLabel textColor="#586e75">Environment</y:NodeLabel> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n70"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="34.08" width="73.485" x="0.0" y="0.0"/> + <y:Fill color="#eee8d5" transparent="false"/> + <y:BorderStyle color="#586e75" type="line" width="1.0"/> + <y:NodeLabel textColor="#586e75">Environment +.parentEnv</y:NodeLabel> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n71"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="34.08" width="101.175" x="0.0" y="0.0"/> + <y:Fill color="#eee8d5" transparent="false"/> + <y:BorderStyle color="#586e75" type="line" width="1.0"/> + <y:NodeLabel textColor="#586e75">Environment +.namedElements</y:NodeLabel> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n72"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> <y:Geometry height="34.08" width="109.51" x="0.0" y="0.0"/> <y:Fill color="#eee8d5" transparent="false"/> <y:BorderStyle color="#cb4b16" type="line" width="1.0"/> @@ -1170,7 +1225,7 @@ </y:ShapeNode> </data> </node> - <edge id="e34" source="n69" target="n5"> + <edge id="e36" source="n72" target="n5"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1178,7 +1233,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e35" source="n69" target="n4"> + <edge id="e37" source="n72" target="n4"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1186,7 +1241,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e36" source="n2" target="n69"> + <edge id="e38" source="n2" target="n72"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1194,7 +1249,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n70"> + <node id="n73"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1207,7 +1262,7 @@ </y:ShapeNode> </data> </node> - <edge id="e37" source="n70" target="n24"> + <edge id="e39" source="n73" target="n24"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1215,7 +1270,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e38" source="n70" target="n8"> + <edge id="e40" source="n73" target="n8"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1223,7 +1278,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e39" source="n7" target="n70"> + <edge id="e41" source="n7" target="n73"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1231,7 +1286,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e40" source="n11" target="n70"> + <edge id="e42" source="n11" target="n73"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1239,7 +1294,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e41" source="n12" target="n70"> + <edge id="e43" source="n12" target="n73"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1247,7 +1302,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n71"> + <node id="n74"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1260,7 +1315,7 @@ </y:ShapeNode> </data> </node> - <edge id="e42" source="n71" target="n21"> + <edge id="e44" source="n74" target="n21"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1268,7 +1323,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e43" source="n71" target="n8"> + <edge id="e45" source="n74" target="n8"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1276,7 +1331,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e44" source="n7" target="n71"> + <edge id="e46" source="n7" target="n74"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1284,7 +1339,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e45" source="n11" target="n71"> + <edge id="e47" source="n11" target="n74"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1292,7 +1347,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e46" source="n12" target="n71"> + <edge id="e48" source="n12" target="n74"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1300,7 +1355,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n72"> + <node id="n75"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1313,7 +1368,7 @@ </y:ShapeNode> </data> </node> - <edge id="e47" source="n72" target="n27"> + <edge id="e49" source="n75" target="n27"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1321,7 +1376,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e48" source="n72" target="n8"> + <edge id="e50" source="n75" target="n8"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1329,7 +1384,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e49" source="n7" target="n72"> + <edge id="e51" source="n7" target="n75"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1337,7 +1392,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e50" source="n11" target="n72"> + <edge id="e52" source="n11" target="n75"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1345,7 +1400,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n73"> + <node id="n76"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1358,7 +1413,7 @@ </y:ShapeNode> </data> </node> - <edge id="e51" source="n73" target="n38"> + <edge id="e53" source="n76" target="n38"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1366,7 +1421,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e52" source="n73" target="n35"> + <edge id="e54" source="n76" target="n35"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1374,7 +1429,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e53" source="n34" target="n73"> + <edge id="e55" source="n34" target="n76"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1382,7 +1437,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n74"> + <node id="n77"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1395,7 +1450,7 @@ </y:ShapeNode> </data> </node> - <edge id="e54" source="n74" target="n47"> + <edge id="e56" source="n77" target="n47"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1403,7 +1458,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e55" source="n74" target="n44"> + <edge id="e57" source="n77" target="n44"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1411,7 +1466,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e56" source="n43" target="n74"> + <edge id="e58" source="n43" target="n77"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1419,7 +1474,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n75"> + <node id="n78"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1432,7 +1487,7 @@ </y:ShapeNode> </data> </node> - <edge id="e57" source="n75" target="n56"> + <edge id="e59" source="n78" target="n56"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1440,7 +1495,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e58" source="n75" target="n54"> + <edge id="e60" source="n78" target="n54"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1448,7 +1503,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e59" source="n52" target="n75"> + <edge id="e61" source="n52" target="n78"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1456,7 +1511,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e60" source="n53" target="n75"> + <edge id="e62" source="n53" target="n78"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1464,7 +1519,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n76"> + <node id="n79"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1477,7 +1532,7 @@ </y:ShapeNode> </data> </node> - <edge id="e61" source="n76" target="n56"> + <edge id="e63" source="n79" target="n56"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1485,7 +1540,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e62" source="n76" target="n54"> + <edge id="e64" source="n79" target="n54"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1493,7 +1548,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e63" source="n52" target="n76"> + <edge id="e65" source="n52" target="n79"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1501,7 +1556,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e64" source="n53" target="n76"> + <edge id="e66" source="n53" target="n79"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1509,7 +1564,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n77"> + <node id="n80"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1522,7 +1577,7 @@ </y:ShapeNode> </data> </node> - <edge id="e65" source="n77" target="n6"> + <edge id="e67" source="n80" target="n6"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1530,7 +1585,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e66" source="n77" target="n19"> + <edge id="e68" source="n80" target="n19"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="dashed" width="1.0"/> @@ -1538,7 +1593,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e67" source="n2" target="n77"> + <edge id="e69" source="n2" target="n80"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1546,7 +1601,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e68" source="n3" target="n77"> + <edge id="e70" source="n3" target="n80"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1554,7 +1609,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e69" source="n8" target="n77"> + <edge id="e71" source="n8" target="n80"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1562,7 +1617,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e70" source="n4" target="n77"> + <edge id="e72" source="n4" target="n80"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1570,7 +1625,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n78"> + <node id="n81"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1583,7 +1638,7 @@ </y:ShapeNode> </data> </node> - <edge id="e71" source="n78" target="n25"> + <edge id="e73" source="n81" target="n25"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1591,7 +1646,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e72" source="n7" target="n78"> + <edge id="e74" source="n7" target="n81"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1599,7 +1654,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e73" source="n9" target="n78"> + <edge id="e75" source="n9" target="n81"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1607,7 +1662,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e74" source="n8" target="n78"> + <edge id="e76" source="n8" target="n81"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1615,7 +1670,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e75" source="n11" target="n78"> + <edge id="e77" source="n11" target="n81"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1623,7 +1678,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e76" source="n12" target="n78"> + <edge id="e78" source="n12" target="n81"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1631,7 +1686,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n79"> + <node id="n82"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1644,7 +1699,7 @@ </y:ShapeNode> </data> </node> - <edge id="e77" source="n79" target="n26"> + <edge id="e79" source="n82" target="n26"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1652,7 +1707,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e78" source="n79" target="n48"> + <edge id="e80" source="n82" target="n48"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1660,7 +1715,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e79" source="n7" target="n79"> + <edge id="e81" source="n7" target="n82"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1668,7 +1723,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e80" source="n10" target="n79"> + <edge id="e82" source="n10" target="n82"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1676,7 +1731,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e81" source="n44" target="n79"> + <edge id="e83" source="n44" target="n82"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1684,7 +1739,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e82" source="n8" target="n79"> + <edge id="e84" source="n8" target="n82"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1692,7 +1747,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e83" source="n11" target="n79"> + <edge id="e85" source="n11" target="n82"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1700,7 +1755,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e84" source="n12" target="n79"> + <edge id="e86" source="n12" target="n82"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1708,7 +1763,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n80"> + <node id="n83"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1721,7 +1776,7 @@ </y:ShapeNode> </data> </node> - <edge id="e85" source="n80" target="n22"> + <edge id="e87" source="n83" target="n22"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1729,7 +1784,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e86" source="n7" target="n80"> + <edge id="e88" source="n7" target="n83"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1737,7 +1792,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e87" source="n9" target="n80"> + <edge id="e89" source="n9" target="n83"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1745,7 +1800,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e88" source="n8" target="n80"> + <edge id="e90" source="n8" target="n83"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1753,7 +1808,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e89" source="n11" target="n80"> + <edge id="e91" source="n11" target="n83"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1761,7 +1816,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e90" source="n12" target="n80"> + <edge id="e92" source="n12" target="n83"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1769,7 +1824,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n81"> + <node id="n84"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1782,7 +1837,7 @@ </y:ShapeNode> </data> </node> - <edge id="e91" source="n81" target="n23"> + <edge id="e93" source="n84" target="n23"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1790,7 +1845,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e92" source="n81" target="n48"> + <edge id="e94" source="n84" target="n48"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1798,7 +1853,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e93" source="n7" target="n81"> + <edge id="e95" source="n7" target="n84"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1806,7 +1861,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e94" source="n10" target="n81"> + <edge id="e96" source="n10" target="n84"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1814,7 +1869,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e95" source="n44" target="n81"> + <edge id="e97" source="n44" target="n84"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1822,7 +1877,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e96" source="n8" target="n81"> + <edge id="e98" source="n8" target="n84"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1830,7 +1885,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e97" source="n11" target="n81"> + <edge id="e99" source="n11" target="n84"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1838,7 +1893,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e98" source="n12" target="n81"> + <edge id="e100" source="n12" target="n84"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1846,7 +1901,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n82"> + <node id="n85"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1859,7 +1914,7 @@ </y:ShapeNode> </data> </node> - <edge id="e99" source="n82" target="n28"> + <edge id="e101" source="n85" target="n28"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1867,7 +1922,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e100" source="n7" target="n82"> + <edge id="e102" source="n7" target="n85"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1875,7 +1930,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e101" source="n9" target="n82"> + <edge id="e103" source="n9" target="n85"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1883,7 +1938,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e102" source="n8" target="n82"> + <edge id="e104" source="n8" target="n85"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1891,7 +1946,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e103" source="n11" target="n82"> + <edge id="e105" source="n11" target="n85"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1899,7 +1954,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n83"> + <node id="n86"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1912,7 +1967,7 @@ </y:ShapeNode> </data> </node> - <edge id="e104" source="n83" target="n29"> + <edge id="e106" source="n86" target="n29"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1920,7 +1975,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e105" source="n83" target="n39"> + <edge id="e107" source="n86" target="n39"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1928,7 +1983,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e106" source="n7" target="n83"> + <edge id="e108" source="n7" target="n86"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1936,7 +1991,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e107" source="n10" target="n83"> + <edge id="e109" source="n10" target="n86"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1944,7 +1999,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e108" source="n35" target="n83"> + <edge id="e110" source="n35" target="n86"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1952,7 +2007,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e109" source="n8" target="n83"> + <edge id="e111" source="n8" target="n86"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1960,7 +2015,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e110" source="n11" target="n83"> + <edge id="e112" source="n11" target="n86"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -1968,7 +2023,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n84"> + <node id="n87"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -1981,7 +2036,7 @@ </y:ShapeNode> </data> </node> - <edge id="e111" source="n84" target="n40"> + <edge id="e113" source="n87" target="n40"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1989,7 +2044,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e112" source="n84" target="n60"> + <edge id="e114" source="n87" target="n60"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -1997,7 +2052,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e113" source="n34" target="n84"> + <edge id="e115" source="n34" target="n87"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2005,7 +2060,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e114" source="n54" target="n84"> + <edge id="e116" source="n54" target="n87"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2013,7 +2068,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e115" source="n36" target="n84"> + <edge id="e117" source="n36" target="n87"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2021,7 +2076,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e116" source="n35" target="n84"> + <edge id="e118" source="n35" target="n87"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2029,7 +2084,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n85"> + <node id="n88"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -2042,7 +2097,7 @@ </y:ShapeNode> </data> </node> - <edge id="e117" source="n85" target="n41"> + <edge id="e119" source="n88" target="n41"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -2050,7 +2105,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e118" source="n34" target="n85"> + <edge id="e120" source="n34" target="n88"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2058,7 +2113,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e119" source="n37" target="n85"> + <edge id="e121" source="n37" target="n88"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2066,7 +2121,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e120" source="n35" target="n85"> + <edge id="e122" source="n35" target="n88"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2074,7 +2129,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n86"> + <node id="n89"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -2087,7 +2142,7 @@ </y:ShapeNode> </data> </node> - <edge id="e121" source="n86" target="n49"> + <edge id="e123" source="n89" target="n49"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -2095,7 +2150,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e122" source="n86" target="n61"> + <edge id="e124" source="n89" target="n61"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -2103,7 +2158,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e123" source="n43" target="n86"> + <edge id="e125" source="n43" target="n89"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2111,7 +2166,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e124" source="n54" target="n86"> + <edge id="e126" source="n54" target="n89"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2119,7 +2174,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e125" source="n45" target="n86"> + <edge id="e127" source="n45" target="n89"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2127,7 +2182,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e126" source="n44" target="n86"> + <edge id="e128" source="n44" target="n89"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2135,7 +2190,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n87"> + <node id="n90"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -2148,7 +2203,7 @@ </y:ShapeNode> </data> </node> - <edge id="e127" source="n87" target="n50"> + <edge id="e129" source="n90" target="n50"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -2156,7 +2211,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e128" source="n43" target="n87"> + <edge id="e130" source="n43" target="n90"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2164,7 +2219,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e129" source="n46" target="n87"> + <edge id="e131" source="n46" target="n90"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2172,7 +2227,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e130" source="n44" target="n87"> + <edge id="e132" source="n44" target="n90"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2180,7 +2235,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n88"> + <node id="n91"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -2193,7 +2248,7 @@ </y:ShapeNode> </data> </node> - <edge id="e131" source="n88" target="n57"> + <edge id="e133" source="n91" target="n57"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -2201,7 +2256,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e132" source="n88" target="n20"> + <edge id="e134" source="n91" target="n20"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="dashed" width="1.0"/> @@ -2209,7 +2264,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e133" source="n52" target="n88"> + <edge id="e135" source="n52" target="n91"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2217,7 +2272,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e134" source="n53" target="n88"> + <edge id="e136" source="n53" target="n91"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2225,7 +2280,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e135" source="n48" target="n88"> + <edge id="e137" source="n48" target="n91"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2233,7 +2288,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e136" source="n44" target="n88"> + <edge id="e138" source="n44" target="n91"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2241,7 +2296,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e137" source="n54" target="n88"> + <edge id="e139" source="n54" target="n91"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2249,7 +2304,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n89"> + <node id="n92"> <data key="d5"/> <data key="d6"> <y:ShapeNode> @@ -2257,12 +2312,12 @@ <y:Fill color="#eee8d5" transparent="false"/> <y:BorderStyle color="#cb4b16" type="line" width="1.0"/> <y:NodeLabel textColor="#cb4b16">uD_0_refsC -(22)</y:NodeLabel> +(24)</y:NodeLabel> <y:Shape type="hexagon"/> </y:ShapeNode> </data> </node> - <edge id="e138" source="n89" target="n58"> + <edge id="e140" source="n92" target="n58"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -2270,7 +2325,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e139" source="n89" target="n51"> + <edge id="e141" source="n92" target="n51"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="dashed" width="1.0"/> @@ -2278,7 +2333,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e140" source="n52" target="n89"> + <edge id="e142" source="n52" target="n92"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2286,7 +2341,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e141" source="n53" target="n89"> + <edge id="e143" source="n53" target="n92"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2294,7 +2349,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e142" source="n54" target="n89"> + <edge id="e144" source="n55" target="n92"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2302,7 +2357,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e143" source="n55" target="n89"> + <edge id="e145" source="n67" target="n92"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2310,7 +2365,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e144" source="n63" target="n89"> + <edge id="e146" source="n54" target="n92"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2318,15 +2373,28 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e145" source="n65" target="n89"> + <node id="n93"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="34.08" width="62.91" x="0.0" y="0.0"/> + <y:Fill color="#eee8d5" transparent="false"/> + <y:BorderStyle color="#cb4b16" type="line" width="1.0"/> + <y:NodeLabel textColor="#cb4b16">uD_1_toA +(25)</y:NodeLabel> + <y:Shape type="hexagon"/> + </y:ShapeNode> + </data> + </node> + <edge id="e147" source="n93" target="n57"> <data key="d9"> <y:PolyLineEdge> - <y:LineStyle color="#859900" type="line" width="1.0"/> + <y:LineStyle color="#657b83" type="line" width="1.0"/> <y:Arrows source="none" target="standard"/> </y:PolyLineEdge> </data> </edge> - <edge id="e146" source="n66" target="n89"> + <edge id="e148" source="n52" target="n93"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2334,7 +2402,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e147" source="n16" target="n89"> + <edge id="e149" source="n53" target="n93"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2342,7 +2410,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e148" source="n68" target="n89"> + <edge id="e150" source="n39" target="n93"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2350,7 +2418,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e149" source="n6" target="n89"> + <edge id="e151" source="n35" target="n93"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2358,7 +2426,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e150" source="n29" target="n89"> + <edge id="e152" source="n54" target="n93"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2366,7 +2434,36 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e151" source="n23" target="n89"> + <node id="n94"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="34.08" width="76.88999999999999" x="0.0" y="0.0"/> + <y:Fill color="#eee8d5" transparent="false"/> + <y:BorderStyle color="#cb4b16" type="line" width="1.0"/> + <y:NodeLabel textColor="#cb4b16">uD_1_refsB +(23)</y:NodeLabel> + <y:Shape type="hexagon"/> + </y:ShapeNode> + </data> + </node> + <edge id="e153" source="n94" target="n59"> + <data key="d9"> + <y:PolyLineEdge> + <y:LineStyle color="#657b83" type="line" width="1.0"/> + <y:Arrows source="none" target="standard"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e154" source="n94" target="n42"> + <data key="d9"> + <y:PolyLineEdge> + <y:LineStyle color="#657b83" type="dashed" width="1.0"/> + <y:Arrows source="none" target="standard"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e155" source="n52" target="n94"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2374,7 +2471,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e152" source="n40" target="n89"> + <edge id="e156" source="n53" target="n94"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2382,7 +2479,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e153" source="n49" target="n89"> + <edge id="e157" source="n55" target="n94"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2390,7 +2487,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e154" source="n41" target="n89"> + <edge id="e158" source="n67" target="n94"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2398,7 +2495,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e155" source="n50" target="n89"> + <edge id="e159" source="n54" target="n94"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2406,20 +2503,20 @@ </y:PolyLineEdge> </data> </edge> - <node id="n90"> + <node id="n95"> <data key="d5"/> <data key="d6"> <y:ShapeNode> - <y:Geometry height="34.08" width="62.91" x="0.0" y="0.0"/> + <y:Geometry height="34.08" width="138.635" x="0.0" y="0.0"/> <y:Fill color="#eee8d5" transparent="false"/> <y:BorderStyle color="#cb4b16" type="line" width="1.0"/> - <y:NodeLabel textColor="#cb4b16">uD_1_toA -(23)</y:NodeLabel> + <y:NodeLabel textColor="#cb4b16">uPathElementCS_ast +(21)</y:NodeLabel> <y:Shape type="hexagon"/> </y:ShapeNode> </data> </node> - <edge id="e156" source="n90" target="n57"> + <edge id="e160" source="n95" target="n63"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#657b83" type="line" width="1.0"/> @@ -2427,7 +2524,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e157" source="n52" target="n90"> + <edge id="e161" source="n62" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2435,7 +2532,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e158" source="n53" target="n90"> + <edge id="e162" source="n63" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2443,7 +2540,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e159" source="n39" target="n90"> + <edge id="e163" source="n1" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2451,7 +2548,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e160" source="n35" target="n90"> + <edge id="e164" source="n64" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2459,7 +2556,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e161" source="n54" target="n90"> + <edge id="e165" source="n68" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2467,36 +2564,7 @@ </y:PolyLineEdge> </data> </edge> - <node id="n91"> - <data key="d5"/> - <data key="d6"> - <y:ShapeNode> - <y:Geometry height="34.08" width="76.88999999999999" x="0.0" y="0.0"/> - <y:Fill color="#eee8d5" transparent="false"/> - <y:BorderStyle color="#cb4b16" type="line" width="1.0"/> - <y:NodeLabel textColor="#cb4b16">uD_1_refsB -(21)</y:NodeLabel> - <y:Shape type="hexagon"/> - </y:ShapeNode> - </data> - </node> - <edge id="e162" source="n91" target="n59"> - <data key="d9"> - <y:PolyLineEdge> - <y:LineStyle color="#657b83" type="line" width="1.0"/> - <y:Arrows source="none" target="standard"/> - </y:PolyLineEdge> - </data> - </edge> - <edge id="e163" source="n91" target="n42"> - <data key="d9"> - <y:PolyLineEdge> - <y:LineStyle color="#657b83" type="dashed" width="1.0"/> - <y:Arrows source="none" target="standard"/> - </y:PolyLineEdge> - </data> - </edge> - <edge id="e164" source="n52" target="n91"> + <edge id="e166" source="n70" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2504,7 +2572,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e165" source="n53" target="n91"> + <edge id="e167" source="n71" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2512,7 +2580,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e166" source="n54" target="n91"> + <edge id="e168" source="n16" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2520,7 +2588,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e167" source="n55" target="n91"> + <edge id="e169" source="n65" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2528,7 +2596,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e168" source="n63" target="n91"> + <edge id="e170" source="n6" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2536,7 +2604,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e169" source="n65" target="n91"> + <edge id="e171" source="n29" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2544,7 +2612,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e170" source="n66" target="n91"> + <edge id="e172" source="n23" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2552,7 +2620,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e171" source="n16" target="n91"> + <edge id="e173" source="n40" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2560,7 +2628,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e172" source="n68" target="n91"> + <edge id="e174" source="n49" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2568,7 +2636,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e173" source="n6" target="n91"> + <edge id="e175" source="n41" target="n95"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2576,23 +2644,28 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e174" source="n29" target="n91"> - <data key="d9"> - <y:PolyLineEdge> - <y:LineStyle color="#859900" type="line" width="1.0"/> - <y:Arrows source="none" target="standard"/> - </y:PolyLineEdge> + <node id="n96"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="34.08" width="124.655" x="0.0" y="0.0"/> + <y:Fill color="#eee8d5" transparent="false"/> + <y:BorderStyle color="#cb4b16" type="line" width="1.0"/> + <y:NodeLabel textColor="#cb4b16">uPathNameCS_ast +(22)</y:NodeLabel> + <y:Shape type="hexagon"/> + </y:ShapeNode> </data> - </edge> - <edge id="e175" source="n23" target="n91"> + </node> + <edge id="e176" source="n96" target="n67"> <data key="d9"> <y:PolyLineEdge> - <y:LineStyle color="#859900" type="line" width="1.0"/> + <y:LineStyle color="#657b83" type="line" width="1.0"/> <y:Arrows source="none" target="standard"/> </y:PolyLineEdge> </data> </edge> - <edge id="e176" source="n40" target="n91"> + <edge id="e177" source="n66" target="n96"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2600,7 +2673,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e177" source="n49" target="n91"> + <edge id="e178" source="n63" target="n96"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> @@ -2608,7 +2681,7 @@ </y:PolyLineEdge> </data> </edge> - <edge id="e178" source="n41" target="n91"> + <edge id="e179" source="n68" target="n96"> <data key="d9"> <y:PolyLineEdge> <y:LineStyle color="#859900" type="line" width="1.0"/> diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_complete.graphml b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_complete.graphml index 3e1c67455..d105ec02a 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_complete.graphml +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_complete.graphml @@ -107,21 +107,21 @@ <y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="PathNameCS">
+ <graphml:node id="PathElementCS">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>PathNameCS</y:NodeLabel>
+ <y:NodeLabel>PathElementCS</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="Environment">
+ <graphml:node id="PathNameCS">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>Environment</y:NodeLabel>
+ <y:NodeLabel>PathNameCS</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="PathElementCS">
+ <graphml:node id="Environment">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>PathElementCS</y:NodeLabel>
+ <y:NodeLabel>Environment</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
@@ -395,6 +395,30 @@ <y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
+ <graphml:node id="PathElementCS::ast">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>PathElementCS::ast</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="PathElementCS::pathName">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>PathElementCS::pathName</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="PathElementCS::name">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>PathElementCS::name</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="PathNameCS::ast">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>PathNameCS::ast</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
<graphml:node id="PathNameCS::path">
<graphml:data key="d6"><y:ShapeNode>
<y:NodeLabel>PathNameCS::path</y:NodeLabel>
@@ -413,12 +437,6 @@ <y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="PathElementCS::name">
- <graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>PathElementCS::name</y:NodeLabel>
- <y:Shape type="rectangle"/>
- </y:ShapeNode></graphml:data>
- </graphml:node>
<graphml:node id="cSRoot_2_TRoot (1)">
<graphml:data key="d6"><y:ShapeNode>
<y:NodeLabel>cSRoot_2_TRoot (1)</y:NodeLabel>
@@ -539,21 +557,33 @@ <y:Shape type="ellipse"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="uD_0_refsC (22)">
+ <graphml:node id="uD_0_refsC (24)">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>uD_0_refsC (24)</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="uD_1_toA (25)">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>uD_1_toA (25)</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="uD_1_refsB (23)">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>uD_0_refsC (22)</y:NodeLabel>
+ <y:NodeLabel>uD_1_refsB (23)</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="uD_1_toA (23)">
+ <graphml:node id="uPathElementCS_ast (21)">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>uD_1_toA (23)</y:NodeLabel>
+ <y:NodeLabel>uPathElementCS_ast (21)</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="uD_1_refsB (21)">
+ <graphml:node id="uPathNameCS_ast (22)">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>uD_1_refsB (21)</y:NodeLabel>
+ <y:NodeLabel>uPathNameCS_ast (22)</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode></graphml:data>
</graphml:node>
@@ -641,13 +671,13 @@ <y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
- <graphml:edge source="PathNameCS" target="SElement">
+ <graphml:edge source="PathElementCS" target="SElement">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dotted"/>
<y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
- <graphml:edge source="PathElementCS" target="SElement">
+ <graphml:edge source="PathNameCS" target="SElement">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dotted"/>
<y:Arrows source="none" target="standard"/>
@@ -815,6 +845,18 @@ <y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
+ <graphml:edge source="PathElementCS::ast" target="SElement::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge source="PathNameCS::ast" target="SElement::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="SRoot" target="cSRoot_2_TRoot (1)"/>
<graphml:edge source="cSRoot_2_TRoot (1)" target="TRoot"/>
<graphml:edge source="cSRoot_2_TRoot (1)" target="SRoot::ast"/>
@@ -919,46 +961,45 @@ <graphml:edge source="Z::ast" target="uD_0_toA (12)"/>
<graphml:edge source="uD_0_toA (12)" target="D::toA"/>
<graphml:edge source="uD_0_toA (12)" target="A::D"/>
- <graphml:edge source="Z" target="uD_0_refsC (22)"/>
- <graphml:edge source="Z::toY" target="uD_0_refsC (22)"/>
- <graphml:edge source="Z::ast" target="uD_0_refsC (22)"/>
- <graphml:edge source="Z::refers" target="uD_0_refsC (22)"/>
- <graphml:edge source="PathNameCS::path" target="uD_0_refsC (22)"/>
- <graphml:edge source="Environment::parentEnv" target="uD_0_refsC (22)"/>
- <graphml:edge source="Environment::namedElements" target="uD_0_refsC (22)"/>
- <graphml:edge source="Namespace::name" target="uD_0_refsC (22)"/>
- <graphml:edge source="PathElementCS::name" target="uD_0_refsC (22)"/>
- <graphml:edge source="TRoot::ownedA" target="uD_0_refsC (22)"/>
- <graphml:edge source="A1::ownsB" target="uD_0_refsC (22)"/>
- <graphml:edge source="A2::ownsC" target="uD_0_refsC (22)"/>
- <graphml:edge source="B::ownsD" target="uD_0_refsC (22)"/>
- <graphml:edge source="C::ownsD" target="uD_0_refsC (22)"/>
- <graphml:edge source="B::name" target="uD_0_refsC (22)"/>
- <graphml:edge source="C::name" target="uD_0_refsC (22)"/>
- <graphml:edge source="uD_0_refsC (22)" target="D::refsC"/>
- <graphml:edge source="uD_0_refsC (22)" target="C::D"/>
- <graphml:edge source="Z" target="uD_1_toA (23)"/>
- <graphml:edge source="Z::toY" target="uD_1_toA (23)"/>
- <graphml:edge source="B::toA1" target="uD_1_toA (23)"/>
- <graphml:edge source="Y1::ast" target="uD_1_toA (23)"/>
- <graphml:edge source="Z::ast" target="uD_1_toA (23)"/>
- <graphml:edge source="uD_1_toA (23)" target="D::toA"/>
- <graphml:edge source="Z" target="uD_1_refsB (21)"/>
- <graphml:edge source="Z::toY" target="uD_1_refsB (21)"/>
- <graphml:edge source="Z::ast" target="uD_1_refsB (21)"/>
- <graphml:edge source="Z::refers" target="uD_1_refsB (21)"/>
- <graphml:edge source="PathNameCS::path" target="uD_1_refsB (21)"/>
- <graphml:edge source="Environment::parentEnv" target="uD_1_refsB (21)"/>
- <graphml:edge source="Environment::namedElements" target="uD_1_refsB (21)"/>
- <graphml:edge source="Namespace::name" target="uD_1_refsB (21)"/>
- <graphml:edge source="PathElementCS::name" target="uD_1_refsB (21)"/>
- <graphml:edge source="TRoot::ownedA" target="uD_1_refsB (21)"/>
- <graphml:edge source="A1::ownsB" target="uD_1_refsB (21)"/>
- <graphml:edge source="A2::ownsC" target="uD_1_refsB (21)"/>
- <graphml:edge source="B::ownsD" target="uD_1_refsB (21)"/>
- <graphml:edge source="C::ownsD" target="uD_1_refsB (21)"/>
- <graphml:edge source="B::name" target="uD_1_refsB (21)"/>
- <graphml:edge source="uD_1_refsB (21)" target="D::refsB"/>
- <graphml:edge source="uD_1_refsB (21)" target="B::D"/>
+ <graphml:edge source="Z" target="uD_0_refsC (24)"/>
+ <graphml:edge source="Z::toY" target="uD_0_refsC (24)"/>
+ <graphml:edge source="Z::refers" target="uD_0_refsC (24)"/>
+ <graphml:edge source="PathNameCS::ast" target="uD_0_refsC (24)"/>
+ <graphml:edge source="Z::ast" target="uD_0_refsC (24)"/>
+ <graphml:edge source="uD_0_refsC (24)" target="D::refsC"/>
+ <graphml:edge source="uD_0_refsC (24)" target="C::D"/>
+ <graphml:edge source="Z" target="uD_1_toA (25)"/>
+ <graphml:edge source="Z::toY" target="uD_1_toA (25)"/>
+ <graphml:edge source="B::toA1" target="uD_1_toA (25)"/>
+ <graphml:edge source="Y1::ast" target="uD_1_toA (25)"/>
+ <graphml:edge source="Z::ast" target="uD_1_toA (25)"/>
+ <graphml:edge source="uD_1_toA (25)" target="D::toA"/>
+ <graphml:edge source="Z" target="uD_1_refsB (23)"/>
+ <graphml:edge source="Z::toY" target="uD_1_refsB (23)"/>
+ <graphml:edge source="Z::refers" target="uD_1_refsB (23)"/>
+ <graphml:edge source="PathNameCS::ast" target="uD_1_refsB (23)"/>
+ <graphml:edge source="Z::ast" target="uD_1_refsB (23)"/>
+ <graphml:edge source="uD_1_refsB (23)" target="D::refsB"/>
+ <graphml:edge source="uD_1_refsB (23)" target="B::D"/>
+ <graphml:edge source="PathElementCS" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="PathElementCS::ast" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="SElement::ast" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="PathElementCS::pathName" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="PathNameCS::path" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="Environment::parentEnv" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="Environment::namedElements" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="Namespace::name" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="PathElementCS::name" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="TRoot::ownedA" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="A1::ownsB" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="A2::ownsC" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="B::ownsD" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="C::ownsD" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="B::name" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="uPathElementCS_ast (21)" target="PathElementCS::ast"/>
+ <graphml:edge source="PathNameCS" target="uPathNameCS_ast (22)"/>
+ <graphml:edge source="PathElementCS::ast" target="uPathNameCS_ast (22)"/>
+ <graphml:edge source="PathNameCS::path" target="uPathNameCS_ast (22)"/>
+ <graphml:edge source="uPathNameCS_ast (22)" target="PathNameCS::ast"/>
</graphml:graph>
</graphml:graphml>
\ No newline at end of file diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_pruned.graphml b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_pruned.graphml index 332dd803e..3007ac194 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_pruned.graphml +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_pruned.graphml @@ -5,6 +5,12 @@ <graphml:key for="node" id="d6" yfiles.type="nodegraphics"/>
<graphml:key for="edge" id="d9" yfiles.type="edgegraphics"/>
<graphml:graph edgedefault="directed" id="Graph">
+ <graphml:node id="SElement">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>SElement</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
<graphml:node id="SRoot">
<graphml:data key="d6"><y:ShapeNode>
<y:NodeLabel>SRoot</y:NodeLabel>
@@ -53,6 +59,12 @@ <y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
+ <graphml:node id="Y">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>Y</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
<graphml:node id="Y1">
<graphml:data key="d6"><y:ShapeNode>
<y:NodeLabel>Y1</y:NodeLabel>
@@ -89,6 +101,12 @@ <y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
+ <graphml:node id="PathElementCS">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>PathElementCS</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
<graphml:node id="PathNameCS">
<graphml:data key="d6"><y:ShapeNode>
<y:NodeLabel>PathNameCS</y:NodeLabel>
@@ -101,9 +119,9 @@ <y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="PathElementCS">
+ <graphml:node id="SElement::ast">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>PathElementCS</y:NodeLabel>
+ <y:NodeLabel>SElement::ast</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
@@ -215,6 +233,12 @@ <y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
+ <graphml:node id="Y::ast">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>Y::ast</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
<graphml:node id="Y1::ast">
<graphml:data key="d6"><y:ShapeNode>
<y:NodeLabel>Y1::ast</y:NodeLabel>
@@ -347,6 +371,30 @@ <y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
+ <graphml:node id="PathElementCS::ast">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>PathElementCS::ast</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="PathElementCS::pathName">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>PathElementCS::pathName</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="PathElementCS::name">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>PathElementCS::name</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="PathNameCS::ast">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>PathNameCS::ast</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
<graphml:node id="PathNameCS::path">
<graphml:data key="d6"><y:ShapeNode>
<y:NodeLabel>PathNameCS::path</y:NodeLabel>
@@ -365,12 +413,6 @@ <y:Shape type="rectangle"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="PathElementCS::name">
- <graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>PathElementCS::name</y:NodeLabel>
- <y:Shape type="rectangle"/>
- </y:ShapeNode></graphml:data>
- </graphml:node>
<graphml:node id="cSRoot_2_TRoot (1)">
<graphml:data key="d6"><y:ShapeNode>
<y:NodeLabel>cSRoot_2_TRoot (1)</y:NodeLabel>
@@ -491,24 +533,48 @@ <y:Shape type="ellipse"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="uD_0_refsC (22)">
+ <graphml:node id="uD_0_refsC (24)">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>uD_0_refsC (24)</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="uD_1_toA (25)">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>uD_0_refsC (22)</y:NodeLabel>
+ <y:NodeLabel>uD_1_toA (25)</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="uD_1_toA (23)">
+ <graphml:node id="uD_1_refsB (23)">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>uD_1_toA (23)</y:NodeLabel>
+ <y:NodeLabel>uD_1_refsB (23)</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode></graphml:data>
</graphml:node>
- <graphml:node id="uD_1_refsB (21)">
+ <graphml:node id="uPathElementCS_ast (21)">
<graphml:data key="d6"><y:ShapeNode>
- <y:NodeLabel>uD_1_refsB (21)</y:NodeLabel>
+ <y:NodeLabel>uPathElementCS_ast (21)</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode></graphml:data>
</graphml:node>
+ <graphml:node id="uPathNameCS_ast (22)">
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:NodeLabel>uPathNameCS_ast (22)</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:edge source="SRoot" target="SElement">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge source="X" target="SElement">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="A" target="Namespace">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dotted"/>
@@ -533,24 +599,72 @@ <y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
+ <graphml:edge source="Y" target="SElement">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge source="Y1" target="Y">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="B" target="Namespace">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dotted"/>
<y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
+ <graphml:edge source="Y2" target="Y">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="C" target="Namespace">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dotted"/>
<y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
+ <graphml:edge source="Z" target="SElement">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge source="PathElementCS" target="SElement">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge source="PathNameCS" target="SElement">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge source="SRoot::ast" target="SElement::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="TRoot::ownedA" target="A::TRoot">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dashed"/>
<y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
+ <graphml:edge source="X::ast" target="SElement::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="A::name" target="Namespace::name">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dotted"/>
@@ -599,6 +713,18 @@ <y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
+ <graphml:edge source="Y::ast" target="SElement::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge source="Y1::ast" target="Y::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="B::ownsD" target="D::toB">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dashed"/>
@@ -611,6 +737,12 @@ <y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
+ <graphml:edge source="Y2::ast" target="Y::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="C::ownsD" target="D::toC">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dashed"/>
@@ -623,6 +755,12 @@ <y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
+ <graphml:edge source="Z::ast" target="SElement::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="D::toA" target="A::D">
<graphml:data key="d9"><y:PolyLineEdge>
<y:LineStyle type="dashed"/>
@@ -641,6 +779,18 @@ <y:Arrows source="none" target="standard"/>
</y:PolyLineEdge></graphml:data>
</graphml:edge>
+ <graphml:edge source="PathElementCS::ast" target="SElement::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge source="PathNameCS::ast" target="SElement::ast">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
<graphml:edge source="SRoot" target="cSRoot_2_TRoot (1)"/>
<graphml:edge source="cSRoot_2_TRoot (1)" target="TRoot"/>
<graphml:edge source="cSRoot_2_TRoot (1)" target="SRoot::ast"/>
@@ -745,46 +895,45 @@ <graphml:edge source="Z::ast" target="uD_0_toA (12)"/>
<graphml:edge source="uD_0_toA (12)" target="D::toA"/>
<graphml:edge source="uD_0_toA (12)" target="A::D"/>
- <graphml:edge source="Z" target="uD_0_refsC (22)"/>
- <graphml:edge source="Z::toY" target="uD_0_refsC (22)"/>
- <graphml:edge source="Z::ast" target="uD_0_refsC (22)"/>
- <graphml:edge source="Z::refers" target="uD_0_refsC (22)"/>
- <graphml:edge source="PathNameCS::path" target="uD_0_refsC (22)"/>
- <graphml:edge source="Environment::parentEnv" target="uD_0_refsC (22)"/>
- <graphml:edge source="Environment::namedElements" target="uD_0_refsC (22)"/>
- <graphml:edge source="Namespace::name" target="uD_0_refsC (22)"/>
- <graphml:edge source="PathElementCS::name" target="uD_0_refsC (22)"/>
- <graphml:edge source="TRoot::ownedA" target="uD_0_refsC (22)"/>
- <graphml:edge source="A1::ownsB" target="uD_0_refsC (22)"/>
- <graphml:edge source="A2::ownsC" target="uD_0_refsC (22)"/>
- <graphml:edge source="B::ownsD" target="uD_0_refsC (22)"/>
- <graphml:edge source="C::ownsD" target="uD_0_refsC (22)"/>
- <graphml:edge source="B::name" target="uD_0_refsC (22)"/>
- <graphml:edge source="C::name" target="uD_0_refsC (22)"/>
- <graphml:edge source="uD_0_refsC (22)" target="D::refsC"/>
- <graphml:edge source="uD_0_refsC (22)" target="C::D"/>
- <graphml:edge source="Z" target="uD_1_toA (23)"/>
- <graphml:edge source="Z::toY" target="uD_1_toA (23)"/>
- <graphml:edge source="B::toA1" target="uD_1_toA (23)"/>
- <graphml:edge source="Y1::ast" target="uD_1_toA (23)"/>
- <graphml:edge source="Z::ast" target="uD_1_toA (23)"/>
- <graphml:edge source="uD_1_toA (23)" target="D::toA"/>
- <graphml:edge source="Z" target="uD_1_refsB (21)"/>
- <graphml:edge source="Z::toY" target="uD_1_refsB (21)"/>
- <graphml:edge source="Z::ast" target="uD_1_refsB (21)"/>
- <graphml:edge source="Z::refers" target="uD_1_refsB (21)"/>
- <graphml:edge source="PathNameCS::path" target="uD_1_refsB (21)"/>
- <graphml:edge source="Environment::parentEnv" target="uD_1_refsB (21)"/>
- <graphml:edge source="Environment::namedElements" target="uD_1_refsB (21)"/>
- <graphml:edge source="Namespace::name" target="uD_1_refsB (21)"/>
- <graphml:edge source="PathElementCS::name" target="uD_1_refsB (21)"/>
- <graphml:edge source="TRoot::ownedA" target="uD_1_refsB (21)"/>
- <graphml:edge source="A1::ownsB" target="uD_1_refsB (21)"/>
- <graphml:edge source="A2::ownsC" target="uD_1_refsB (21)"/>
- <graphml:edge source="B::ownsD" target="uD_1_refsB (21)"/>
- <graphml:edge source="C::ownsD" target="uD_1_refsB (21)"/>
- <graphml:edge source="B::name" target="uD_1_refsB (21)"/>
- <graphml:edge source="uD_1_refsB (21)" target="D::refsB"/>
- <graphml:edge source="uD_1_refsB (21)" target="B::D"/>
+ <graphml:edge source="Z" target="uD_0_refsC (24)"/>
+ <graphml:edge source="Z::toY" target="uD_0_refsC (24)"/>
+ <graphml:edge source="Z::refers" target="uD_0_refsC (24)"/>
+ <graphml:edge source="PathNameCS::ast" target="uD_0_refsC (24)"/>
+ <graphml:edge source="Z::ast" target="uD_0_refsC (24)"/>
+ <graphml:edge source="uD_0_refsC (24)" target="D::refsC"/>
+ <graphml:edge source="uD_0_refsC (24)" target="C::D"/>
+ <graphml:edge source="Z" target="uD_1_toA (25)"/>
+ <graphml:edge source="Z::toY" target="uD_1_toA (25)"/>
+ <graphml:edge source="B::toA1" target="uD_1_toA (25)"/>
+ <graphml:edge source="Y1::ast" target="uD_1_toA (25)"/>
+ <graphml:edge source="Z::ast" target="uD_1_toA (25)"/>
+ <graphml:edge source="uD_1_toA (25)" target="D::toA"/>
+ <graphml:edge source="Z" target="uD_1_refsB (23)"/>
+ <graphml:edge source="Z::toY" target="uD_1_refsB (23)"/>
+ <graphml:edge source="Z::refers" target="uD_1_refsB (23)"/>
+ <graphml:edge source="PathNameCS::ast" target="uD_1_refsB (23)"/>
+ <graphml:edge source="Z::ast" target="uD_1_refsB (23)"/>
+ <graphml:edge source="uD_1_refsB (23)" target="D::refsB"/>
+ <graphml:edge source="uD_1_refsB (23)" target="B::D"/>
+ <graphml:edge source="PathElementCS" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="PathElementCS::ast" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="SElement::ast" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="PathElementCS::pathName" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="PathNameCS::path" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="Environment::parentEnv" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="Environment::namedElements" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="Namespace::name" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="PathElementCS::name" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="TRoot::ownedA" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="A1::ownsB" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="A2::ownsC" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="B::ownsD" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="C::ownsD" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="B::name" target="uPathElementCS_ast (21)"/>
+ <graphml:edge source="uPathElementCS_ast (21)" target="PathElementCS::ast"/>
+ <graphml:edge source="PathNameCS" target="uPathNameCS_ast (22)"/>
+ <graphml:edge source="PathElementCS::ast" target="uPathNameCS_ast (22)"/>
+ <graphml:edge source="PathNameCS::path" target="uPathNameCS_ast (22)"/>
+ <graphml:edge source="uPathNameCS_ast (22)" target="PathNameCS::ast"/>
</graphml:graph>
</graphml:graphml>
\ No newline at end of file diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model2_output_Interpreted.xmi b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model2_output_Interpreted.xmi index 88c063c9e..401f73a4f 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model2_output_Interpreted.xmi +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model2_output_Interpreted.xmi @@ -22,7 +22,7 @@ <ownsD toA="//@ownedA.2"/> </ownsC> <ownsC name="Y3-c"> - <ownsD toA="//@ownedA.2" refsC="//@ownedA.2/@ownsC.0"/> + <ownsD toA="//@ownedA.2"/> </ownsC> </ownedA> </target:TRoot> diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model3_output_CG.xmi b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model3_output_CG.xmi index 504be78de..bf9abab34 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model3_output_CG.xmi +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model3_output_CG.xmi @@ -1,28 +1,2 @@ <?xml version="1.0" encoding="UTF-8"?> -<target:TRoot xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:target="http://cs2as/tests/example1/targetMM/1.0" - xsi:schemaLocation="http://cs2as/tests/example1/targetMM/1.0 java://example1.target.TargetPackage"> - <ownedA xsi:type="target:A1" name="X1"> - <ownsB name="Y1-a"> - <ownsD toA="//@ownedA.0"/> - </ownsB> - <ownsB name="Y1-b"> - <ownsD toA="//@ownedA.0" refsB="//@ownedA.0/@ownsB.0"/> - </ownsB> - </ownedA> - <ownedA xsi:type="target:A2" name="X2"> - <ownsC name="Y2-a"> - <ownsD toA="//@ownedA.1" refsC="//@ownedA.2/@ownsC.2"/> - </ownsC> - </ownedA> - <ownedA xsi:type="target:A3" name="X3"> - <ownsC name="Y3-a"> - <ownsD toA="//@ownedA.2"/> - </ownsC> - <ownsC name="Y3-b"> - <ownsD toA="//@ownedA.2" refsC="//@ownedA.2/@ownsC.2"/> - </ownsC> - <ownsC name="Y3-c"> - <ownsD toA="//@ownedA.2" refsC="//@ownedA.2/@ownsC.0"/> - </ownsC> - </ownedA> -</target:TRoot> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/> diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtias/Source2Target_qvtp_qvtias.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtias/Source2Target_qvtp_qvtias.java index 1f5b337a0..09ca6b892 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtias/Source2Target_qvtp_qvtias.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtias/Source2Target_qvtp_qvtias.java @@ -11,6 +11,7 @@ package cg._Source2Target_qvtp_qvtias; import example1.source.PathElementCS; import example1.source.PathNameCS; +import example1.source.SElement; import example1.source.SRoot; import example1.source.SourcePackage; import example1.source.X; @@ -46,10 +47,10 @@ import org.eclipse.ocl.pivot.ids.NsURIPackageId; import org.eclipse.ocl.pivot.ids.RootPackageId; import org.eclipse.ocl.pivot.ids.TypeId; import org.eclipse.ocl.pivot.library.classifier.ClassifierAllInstancesOperation; +import org.eclipse.ocl.pivot.library.classifier.ClassifierOclContainerOperation; import org.eclipse.ocl.pivot.library.collection.CollectionSizeOperation; -import org.eclipse.ocl.pivot.library.collection.OrderedCollectionFirstOperation; -import org.eclipse.ocl.pivot.library.collection.OrderedCollectionLastOperation; -import org.eclipse.ocl.pivot.library.collection.OrderedSetSubOrderedSetOperation; +import org.eclipse.ocl.pivot.library.collection.OrderedCollectionAtOperation; +import org.eclipse.ocl.pivot.library.collection.OrderedCollectionIndexOfOperation; import org.eclipse.ocl.pivot.library.logical.BooleanNotOperation; import org.eclipse.ocl.pivot.library.numeric.NumericMinusOperation; import org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsTypeOperation; @@ -91,9 +92,12 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Class = PACKid_$metamodel$.getClassId("Class", 0); public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_D = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("D", 0); public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_EObject = PACKid_http_c_s_s_www_eclipse_org_s_emf_s_2002_s_Ecore.getClassId("EObject", 0); + public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_NamedElement = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("NamedElement", 0); public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Namespace = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("Namespace", 0); + public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_OclElement = PACKid_$metamodel$.getClassId("OclElement", 0); public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_PathElementCS = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_sourceMM_s_1_0.getClassId("PathElementCS", 0); public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_PathNameCS = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_sourceMM_s_1_0.getClassId("PathNameCS", 0); + public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_SElement = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_sourceMM_s_1_0.getClassId("SElement", 0); public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_SRoot = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_sourceMM_s_1_0.getClassId("SRoot", 0); public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_TRoot = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("TRoot", 0); public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Visitable = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("Visitable", 0); @@ -111,6 +115,8 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SEQ_CLSSid_C = TypeId.SEQUENCE.getSpecializedId(CLSSid_C); public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SEQ_CLSSid_Y1 = TypeId.SEQUENCE.getSpecializedId(CLSSid_Y1); public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SEQ_CLSSid_Y2 = TypeId.SEQUENCE.getSpecializedId(CLSSid_Y2); + public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_PathElementCS = TypeId.SET.getSpecializedId(CLSSid_PathElementCS); + public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_PathNameCS = TypeId.SET.getSpecializedId(CLSSid_PathNameCS); public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_SRoot = TypeId.SET.getSpecializedId(CLSSid_SRoot); public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_X = TypeId.SET.getSpecializedId(CLSSid_X); public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Y1 = TypeId.SET.getSpecializedId(CLSSid_Y1); @@ -121,11 +127,13 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer * Array of the ClassIds of each class for which allInstances() may be invoked. Array index is the ClassIndex. */ private static final /*@NonNull*/ ClassId[] classIndex2classId = new ClassId[]{ - CLSSid_SRoot, // 0 => SRoot - CLSSid_X, // 1 => X - CLSSid_Y1, // 2 => Y1 - CLSSid_Y2, // 3 => Y2 - CLSSid_Z // 4 => Z + CLSSid_PathElementCS, // 0 => PathElementCS + CLSSid_PathNameCS, // 1 => PathNameCS + CLSSid_SRoot, // 2 => SRoot + CLSSid_X, // 3 => X + CLSSid_Y1, // 4 => Y1 + CLSSid_Y2, // 5 => Y2 + CLSSid_Z // 6 => Z }; /* @@ -135,11 +143,13 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer * instance of the derived classId contributes to derived and inherited ClassIndexes. */ private final static /*@NonNull*/ int[][] classIndex2allClassIndexes = new int[][] { - {0}, // 0 : SRoot -> {SRoot} - {1}, // 1 : X -> {X} - {2}, // 2 : Y1 -> {Y1} - {3}, // 3 : Y2 -> {Y2} - {4} // 4 : Z -> {Z} + {0}, // 0 : PathElementCS -> {PathElementCS} + {1}, // 1 : PathNameCS -> {PathNameCS} + {2}, // 2 : SRoot -> {SRoot} + {3}, // 3 : X -> {X} + {4}, // 4 : Y1 -> {Y1} + {5}, // 5 : Y2 -> {Y2} + {6} // 6 : Z -> {Z} }; @@ -154,74 +164,6 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer } /** - * target::Visitable::lookupNamespace(pathSeq : OrderedSet(source::PathElementCS)) : target::Namespace[?] - * - * - * if pathSeq->size() = 1 - * then - * _lookupNamespace(pathSeq->first(), false) - * else - * lookupNamespace( - * pathSeq->subOrderedSet(1, pathSeq->size() - 1)) - * ?._lookupNamespace(pathSeq->last(), true) - * endif - */ - public /*@Nullable*/ /*@NonInvalid*/ Namespace lookupNamespace(final /*@NonNull*/ /*@NonInvalid*/ Visitable self_0, final /*@NonNull*/ /*@NonInvalid*/ List<PathElementCS> pathSeq) { - final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver(); - final /*@NonNull*/ /*@NonInvalid*/ OrderedSetValue BOXED_pathSeq_0 = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, pathSeq); - final /*@NonNull*/ /*@NonInvalid*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_pathSeq_0); - final /*@NonInvalid*/ boolean eq = size.equals(INT_1); - /*@Nullable*/ /*@Thrown*/ Namespace symbol_1; - if (eq) { - final /*@Nullable*/ /*@Thrown*/ PathElementCS first = (PathElementCS)OrderedCollectionFirstOperation.INSTANCE.evaluate(BOXED_pathSeq_0); - LookupEnvironment _lookupEnv = new LookupEnvironment(executor,first, ValueUtil.FALSE_VALUE); - TargetLookupVisitor _lookupVisitor = new TargetLookupVisitor(_lookupEnv); - EList<NamedElement> _lookupResult = self_0.accept(_lookupVisitor).getNamedElements(); - Namespace _lookupNamespace = null; - if (_lookupResult.size() == 1) { - _lookupNamespace = (Namespace)_lookupResult.get(0); - } else { - handleLookupError(pathSeq,first); - }; - symbol_1 = _lookupNamespace; - } - else { - final /*@NonNull*/ /*@NonInvalid*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(size, INT_1); - final /*@NonNull*/ /*@Thrown*/ OrderedSetValue subOrderedSet = OrderedSetSubOrderedSetOperation.INSTANCE.evaluate(BOXED_pathSeq_0, INT_1, diff); - final List<PathElementCS> UNBOXED_subOrderedSet = subOrderedSet.asEcoreObjects(idResolver, PathElementCS.class); - assert UNBOXED_subOrderedSet != null; - final /*@Nullable*/ /*@Thrown*/ Namespace lookupNamespace = this.lookupNamespace(self_0, UNBOXED_subOrderedSet); - /*@Nullable*/ /*@Caught*/ Object CAUGHT_lookupNamespace; - try { - CAUGHT_lookupNamespace = lookupNamespace; - } - catch (Exception e) { - CAUGHT_lookupNamespace = ValueUtil.createInvalidValue(e); - } - final /*@NonNull*/ /*@NonInvalid*/ Object symbol_0 = CAUGHT_lookupNamespace == null; - /*@Nullable*/ /*@Thrown*/ Namespace safe__lookupNamespace_source; - if (symbol_0 == Boolean.TRUE) { - safe__lookupNamespace_source = null; - } - else { - final /*@Nullable*/ /*@Thrown*/ PathElementCS last = (PathElementCS)OrderedCollectionLastOperation.INSTANCE.evaluate(BOXED_pathSeq_0); - LookupEnvironment _lookupEnv_0 = new LookupEnvironment(executor,last, ValueUtil.TRUE_VALUE); - TargetLookupVisitor _lookupVisitor_0 = new TargetLookupVisitor(_lookupEnv_0); - EList<NamedElement> _lookupResult_0 = lookupNamespace.accept(_lookupVisitor_0).getNamedElements(); - Namespace _lookupNamespace_0 = null; - if (_lookupResult_0.size() == 1) { - _lookupNamespace_0 = (Namespace)_lookupResult_0.get(0); - } else { - handleLookupError(pathSeq,last); - }; - safe__lookupNamespace_source = _lookupNamespace_0; - } - symbol_1 = safe__lookupNamespace_source; - } - return symbol_1; - } - - /** * * map cSRoot_2_TRoot in Source2Target_qvtp_qvtias { * leftCS (sRoot : source::SRoot[1]; @@ -1114,8 +1056,12 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer * | * _0 := z.ast.oclAsType(target::D) * ; - * _1 := ast.oclAsType(target::D) - * .lookupC(z); + * _1 := if refers = null + * then null + * else + * refers.ast.oclAsType(target::NamedElement) + * .oclAsType(target::C) + * endif; * _0.refsC := _1; * } * @@ -1131,75 +1077,28 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer return false; } final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_D_0 = idResolver.getClass(CLSSid_D, null); - final /*@Nullable*/ /*@Thrown*/ EObject ast = z_2.getAst(); + final /*@Nullable*/ /*@Thrown*/ PathNameCS refers = z_2.getRefers(); // variable assignments + final /*@Nullable*/ /*@Thrown*/ EObject ast = z_2.getAst(); final /*@NonNull*/ /*@Thrown*/ D oclAsType = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0)); - final /*@NonNull*/ /*@Thrown*/ D self_1 = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0)); - final /*@Nullable*/ /*@Thrown*/ PathNameCS refers = z_2.getRefers(); final /*@Thrown*/ boolean eq = refers == null; - /*@Nullable*/ /*@Thrown*/ C symbol_2; + /*@Nullable*/ /*@Thrown*/ C symbol_0; if (eq) { - symbol_2 = null; + symbol_0 = null; } else { + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_C_0 = idResolver.getClass(CLSSid_C, null); + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_NamedElement_0 = idResolver.getClass(CLSSid_NamedElement, null); if (refers == null) { - throwNull(z_2, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::PathNameCS::path\'"); + throwNull(z_2, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::SElement::ast\'"); } - final /*@NonNull*/ /*@Thrown*/ List<PathElementCS> pathSeq_0 = refers.getPath(); - final /*@NonNull*/ /*@Thrown*/ OrderedSetValue BOXED_pathSeq_0_0 = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, pathSeq_0); - final /*@NonNull*/ /*@Thrown*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0); - final /*@Thrown*/ boolean eq_0 = size.equals(INT_1); - /*@Nullable*/ /*@Thrown*/ C symbol_1; - if (eq_0) { - final /*@Nullable*/ /*@Thrown*/ PathElementCS first = (PathElementCS)OrderedCollectionFirstOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0); - LookupEnvironment _lookupEnv = new LookupEnvironment(executor,first, ValueUtil.FALSE_VALUE); - TargetLookupVisitor _lookupVisitor = new TargetLookupVisitor(_lookupEnv); - EList<NamedElement> _lookupResult = self_1.accept(_lookupVisitor).getNamedElements(); - C _lookupC = null; - if (_lookupResult.size() == 1) { - _lookupC = (C)_lookupResult.get(0); - } else { - handleLookupError(z_2,first); - }; - symbol_1 = _lookupC; - } - else { - final /*@NonNull*/ /*@Thrown*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(size, INT_1); - final /*@NonNull*/ /*@Thrown*/ OrderedSetValue subOrderedSet = OrderedSetSubOrderedSetOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0, INT_1, diff); - final List<PathElementCS> UNBOXED_subOrderedSet = subOrderedSet.asEcoreObjects(idResolver, PathElementCS.class); - assert UNBOXED_subOrderedSet != null; - final /*@Nullable*/ /*@Thrown*/ Namespace lookupNamespace = this.lookupNamespace(self_1, UNBOXED_subOrderedSet); - /*@Nullable*/ /*@Caught*/ Object CAUGHT_lookupNamespace; - try { - CAUGHT_lookupNamespace = lookupNamespace; - } - catch (Exception e) { - CAUGHT_lookupNamespace = ValueUtil.createInvalidValue(e); - } - final /*@NonNull*/ /*@NonInvalid*/ Object symbol_0 = CAUGHT_lookupNamespace == null; - /*@Nullable*/ /*@Thrown*/ C safe__lookupC_source; - if (symbol_0 == Boolean.TRUE) { - safe__lookupC_source = null; - } - else { - final /*@Nullable*/ /*@Thrown*/ PathElementCS last = (PathElementCS)OrderedCollectionLastOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0); - LookupEnvironment _lookupEnv_0 = new LookupEnvironment(executor,last, ValueUtil.TRUE_VALUE); - TargetLookupVisitor _lookupVisitor_0 = new TargetLookupVisitor(_lookupEnv_0); - EList<NamedElement> _lookupResult_0 = lookupNamespace.accept(_lookupVisitor_0).getNamedElements(); - C _lookupC_0 = null; - if (_lookupResult_0.size() == 1) { - _lookupC_0 = (C)_lookupResult_0.get(0); - } else { - handleLookupError(z_2,last); - }; - safe__lookupC_source = _lookupC_0; - } - symbol_1 = safe__lookupC_source; - } - symbol_2 = symbol_1; + final /*@Nullable*/ /*@Thrown*/ EObject ast_0 = refers.getAst(); + final /*@NonNull*/ /*@Thrown*/ NamedElement oclAsType_0 = ClassUtil.nonNullState((NamedElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast_0, TYP_target_c_c_NamedElement_0)); + final /*@NonNull*/ /*@Thrown*/ C oclAsType_1 = ClassUtil.nonNullState((C)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, oclAsType_0, TYP_target_c_c_C_0)); + symbol_0 = oclAsType_1; } // property assignments - oclAsType.setRefsC(symbol_2); + oclAsType.setRefsC(symbol_0); return true; } @@ -1268,8 +1167,12 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer * | * _0 := z.ast.oclAsType(target::D) * ; - * _1 := ast.oclAsType(target::D) - * .lookupB(z); + * _1 := if refers = null + * then null + * else + * refers.ast.oclAsType(target::NamedElement) + * .oclAsType(target::B) + * endif; * _0.refsB := _1; * } * @@ -1284,75 +1187,214 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer return false; } final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_D_0 = idResolver.getClass(CLSSid_D, null); - final /*@Nullable*/ /*@Thrown*/ EObject ast = z_4.getAst(); + final /*@Nullable*/ /*@Thrown*/ PathNameCS refers = z_4.getRefers(); // variable assignments + final /*@Nullable*/ /*@Thrown*/ EObject ast = z_4.getAst(); final /*@NonNull*/ /*@Thrown*/ D oclAsType = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0)); - final /*@NonNull*/ /*@Thrown*/ D self_1 = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0)); - final /*@Nullable*/ /*@Thrown*/ PathNameCS refers = z_4.getRefers(); final /*@Thrown*/ boolean eq = refers == null; - /*@Nullable*/ /*@Thrown*/ B symbol_2; + /*@Nullable*/ /*@Thrown*/ B symbol_0; if (eq) { - symbol_2 = null; + symbol_0 = null; } else { + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_B_0 = idResolver.getClass(CLSSid_B, null); + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_NamedElement_0 = idResolver.getClass(CLSSid_NamedElement, null); if (refers == null) { - throwNull(z_4, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::PathNameCS::path\'"); + throwNull(z_4, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::SElement::ast\'"); } - final /*@NonNull*/ /*@Thrown*/ List<PathElementCS> pathSeq_0 = refers.getPath(); - final /*@NonNull*/ /*@Thrown*/ OrderedSetValue BOXED_pathSeq_0_0 = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, pathSeq_0); - final /*@NonNull*/ /*@Thrown*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0); - final /*@Thrown*/ boolean eq_0 = size.equals(INT_1); - /*@Nullable*/ /*@Thrown*/ B symbol_1; + final /*@Nullable*/ /*@Thrown*/ EObject ast_0 = refers.getAst(); + final /*@NonNull*/ /*@Thrown*/ NamedElement oclAsType_0 = ClassUtil.nonNullState((NamedElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast_0, TYP_target_c_c_NamedElement_0)); + final /*@NonNull*/ /*@Thrown*/ B oclAsType_1 = ClassUtil.nonNullState((B)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, oclAsType_0, TYP_target_c_c_B_0)); + symbol_0 = oclAsType_1; + } + // property assignments + oclAsType.setRefsB(symbol_0); + return true; + } + + /** + * + * map uPathElementCS_ast in Source2Target_qvtp_qvtias { + * + * leftCS (pathElementCS : source::PathElementCS[1]; + * |) + * { |} + * rightAS ( |) + * { |} + * where ( |) + * {_0 : target::NamedElement[?]; + * | + * _0 := let path : OrderedSet(source::PathElementCS) = pathName.path; + * + * in + * let + * lookupContext : target::Visitable[?] = pathName.oclContainer() + * .oclAsType(source::SElement) + * .ast.oclAsType(target::Visitable); + * + * in + * let first : source::PathElementCS[?] = path->at(1); + * + * in + * let + * last : source::PathElementCS[?] = path->at(path->size()); + * + * in + * if pathElementCS = first + * then + * if pathElementCS = last + * then + * lookupContext._lookupNamedElement(pathElementCS, false) + * else + * lookupContext._lookupNamespace(pathElementCS, false) + * endif + * else + * let + * prevPathElement : source::PathElementCS[?] = path->at( + * path->indexOf(pathElementCS) - 1); + * + * in + * if pathElementCS = last + * then + * prevPathElement.ast.oclAsType(target::NamedElement) + * ._lookupNamedElement(pathElementCS, true) + * else + * prevPathElement.ast.oclAsType(target::NamedElement) + * ._lookupNamespace(pathElementCS, true) + * endif + * endif; + * pathElementCS.ast := _0; + * } + * + */ + protected boolean MAP_uPathElementCS_ast(final /*@NonNull*/ /*@NonInvalid*/ PathElementCS pathElementCS) throws ReflectiveOperationException { + // predicates + final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver(); + final /*@Nullable*/ /*@Thrown*/ PathNameCS pathName = pathElementCS.getPathName(); + // variable assignments + if (pathName == null) { + throwNull(pathElementCS, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::PathNameCS::path\'"); + } + final /*@NonNull*/ /*@Thrown*/ List<PathElementCS> path = pathName.getPath(); + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_SElement_0 = idResolver.getClass(CLSSid_SElement, null); + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_Visitable_0 = idResolver.getClass(CLSSid_Visitable, null); + final /*@Nullable*/ /*@Thrown*/ Object oclContainer = ClassifierOclContainerOperation.INSTANCE.evaluate(executor, pathName); + final /*@NonNull*/ /*@Thrown*/ SElement oclAsType = ClassUtil.nonNullState((SElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, oclContainer, TYP_source_c_c_SElement_0)); + final /*@Nullable*/ /*@Thrown*/ EObject ast = oclAsType.getAst(); + final /*@NonNull*/ /*@Thrown*/ Visitable lookupContext = ClassUtil.nonNullState((Visitable)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_Visitable_0)); + final /*@NonNull*/ /*@Thrown*/ OrderedSetValue BOXED_path = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, path); + final /*@Nullable*/ /*@Thrown*/ PathElementCS first = (PathElementCS)OrderedCollectionAtOperation.INSTANCE.evaluate(BOXED_path, INT_1); + final /*@NonNull*/ /*@Thrown*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_path); + final /*@Nullable*/ /*@Thrown*/ PathElementCS last = (PathElementCS)OrderedCollectionAtOperation.INSTANCE.evaluate(BOXED_path, size); + final /*@Thrown*/ boolean eq = pathElementCS.equals(first); + /*@Nullable*/ /*@Thrown*/ NamedElement symbol_2; + if (eq) { + final /*@Thrown*/ boolean eq_0 = pathElementCS.equals(last); + /*@Nullable*/ /*@Thrown*/ NamedElement symbol_0; if (eq_0) { - final /*@Nullable*/ /*@Thrown*/ PathElementCS first = (PathElementCS)OrderedCollectionFirstOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0); - LookupEnvironment _lookupEnv = new LookupEnvironment(executor,first, ValueUtil.FALSE_VALUE); + LookupEnvironment _lookupEnv = new LookupEnvironment(executor,pathElementCS, ValueUtil.FALSE_VALUE); TargetLookupVisitor _lookupVisitor = new TargetLookupVisitor(_lookupEnv); - EList<NamedElement> _lookupResult = self_1.accept(_lookupVisitor).getNamedElements(); - B _lookupB = null; + EList<NamedElement> _lookupResult = lookupContext.accept(_lookupVisitor).getNamedElements(); + NamedElement _lookupNamedElement = null; if (_lookupResult.size() == 1) { - _lookupB = (B)_lookupResult.get(0); + _lookupNamedElement = (NamedElement)_lookupResult.get(0); + } else { + handleLookupError(pathElementCS,pathElementCS); + }; + symbol_0 = _lookupNamedElement; + } + else { + LookupEnvironment _lookupEnv_0 = new LookupEnvironment(executor,pathElementCS, ValueUtil.FALSE_VALUE); + TargetLookupVisitor _lookupVisitor_0 = new TargetLookupVisitor(_lookupEnv_0); + EList<NamedElement> _lookupResult_0 = lookupContext.accept(_lookupVisitor_0).getNamedElements(); + Namespace _lookupNamespace = null; + if (_lookupResult_0.size() == 1) { + _lookupNamespace = (Namespace)_lookupResult_0.get(0); } else { - handleLookupError(z_4,first); + handleLookupError(pathElementCS,pathElementCS); }; - symbol_1 = _lookupB; + symbol_0 = _lookupNamespace; + } + symbol_2 = symbol_0; + } + else { + final /*@NonNull*/ /*@Thrown*/ IntegerValue indexOf = OrderedCollectionIndexOfOperation.INSTANCE.evaluate(BOXED_path, pathElementCS); + final /*@NonNull*/ /*@Thrown*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(indexOf, INT_1); + final /*@Nullable*/ /*@Thrown*/ PathElementCS prevPathElement = (PathElementCS)OrderedCollectionAtOperation.INSTANCE.evaluate(BOXED_path, diff); + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_NamedElement_1 = idResolver.getClass(CLSSid_NamedElement, null); + if (prevPathElement == null) { + throwNull(pathElementCS, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::SElement::ast\'"); + } + final /*@Nullable*/ /*@Thrown*/ EObject ast_1 = prevPathElement.getAst(); + final /*@NonNull*/ /*@Thrown*/ NamedElement oclAsType_1 = ClassUtil.nonNullState((NamedElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast_1, TYP_target_c_c_NamedElement_1)); + final /*@Thrown*/ boolean eq_1 = pathElementCS.equals(last); + /*@Nullable*/ /*@Thrown*/ NamedElement symbol_1; + if (eq_1) { + LookupEnvironment _lookupEnv_1 = new LookupEnvironment(executor,pathElementCS, ValueUtil.TRUE_VALUE); + TargetLookupVisitor _lookupVisitor_1 = new TargetLookupVisitor(_lookupEnv_1); + EList<NamedElement> _lookupResult_1 = oclAsType_1.accept(_lookupVisitor_1).getNamedElements(); + NamedElement _lookupNamedElement_0 = null; + if (_lookupResult_1.size() == 1) { + _lookupNamedElement_0 = (NamedElement)_lookupResult_1.get(0); + } else { + handleLookupError(pathElementCS,pathElementCS); + }; + symbol_1 = _lookupNamedElement_0; } else { - final /*@NonNull*/ /*@Thrown*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(size, INT_1); - final /*@NonNull*/ /*@Thrown*/ OrderedSetValue subOrderedSet = OrderedSetSubOrderedSetOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0, INT_1, diff); - final List<PathElementCS> UNBOXED_subOrderedSet = subOrderedSet.asEcoreObjects(idResolver, PathElementCS.class); - assert UNBOXED_subOrderedSet != null; - final /*@Nullable*/ /*@Thrown*/ Namespace lookupNamespace = this.lookupNamespace(self_1, UNBOXED_subOrderedSet); - /*@Nullable*/ /*@Caught*/ Object CAUGHT_lookupNamespace; - try { - CAUGHT_lookupNamespace = lookupNamespace; - } - catch (Exception e) { - CAUGHT_lookupNamespace = ValueUtil.createInvalidValue(e); - } - final /*@NonNull*/ /*@NonInvalid*/ Object symbol_0 = CAUGHT_lookupNamespace == null; - /*@Nullable*/ /*@Thrown*/ B safe__lookupB_source; - if (symbol_0 == Boolean.TRUE) { - safe__lookupB_source = null; - } - else { - final /*@Nullable*/ /*@Thrown*/ PathElementCS last = (PathElementCS)OrderedCollectionLastOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0); - LookupEnvironment _lookupEnv_0 = new LookupEnvironment(executor,last, ValueUtil.TRUE_VALUE); - TargetLookupVisitor _lookupVisitor_0 = new TargetLookupVisitor(_lookupEnv_0); - EList<NamedElement> _lookupResult_0 = lookupNamespace.accept(_lookupVisitor_0).getNamedElements(); - B _lookupB_0 = null; - if (_lookupResult_0.size() == 1) { - _lookupB_0 = (B)_lookupResult_0.get(0); - } else { - handleLookupError(z_4,last); - }; - safe__lookupB_source = _lookupB_0; - } - symbol_1 = safe__lookupB_source; + LookupEnvironment _lookupEnv_2 = new LookupEnvironment(executor,pathElementCS, ValueUtil.TRUE_VALUE); + TargetLookupVisitor _lookupVisitor_2 = new TargetLookupVisitor(_lookupEnv_2); + EList<NamedElement> _lookupResult_2 = oclAsType_1.accept(_lookupVisitor_2).getNamedElements(); + Namespace _lookupNamespace_0 = null; + if (_lookupResult_2.size() == 1) { + _lookupNamespace_0 = (Namespace)_lookupResult_2.get(0); + } else { + handleLookupError(pathElementCS,pathElementCS); + }; + symbol_1 = _lookupNamespace_0; } symbol_2 = symbol_1; } // property assignments - oclAsType.setRefsB(symbol_2); + pathElementCS.setAst(symbol_2); + return true; + } + + /** + * + * map uPathNameCS_ast in Source2Target_qvtp_qvtias { + * + * leftCS (pathNameCS : source::PathNameCS[1]; + * |) + * { |} + * rightAS ( |) + * { |} + * where ( |) + * {_0 : target::NamedElement[1]; + * | + * _0 := path->at( + * path->size()) + * .ast.oclAsType(target::NamedElement); + * pathNameCS.ast := _0; + * } + * + */ + protected boolean MAP_uPathNameCS_ast(final /*@NonNull*/ /*@NonInvalid*/ PathNameCS pathNameCS) throws ReflectiveOperationException { + // predicates + final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver(); + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_NamedElement_0 = idResolver.getClass(CLSSid_NamedElement, null); + final /*@NonNull*/ /*@Thrown*/ List<PathElementCS> path = pathNameCS.getPath(); + final /*@NonNull*/ /*@Thrown*/ OrderedSetValue BOXED_path = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, path); + // variable assignments + final /*@NonNull*/ /*@Thrown*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_path); + final /*@Nullable*/ /*@Thrown*/ PathElementCS at = (PathElementCS)OrderedCollectionAtOperation.INSTANCE.evaluate(BOXED_path, size); + if (at == null) { + throwNull(pathNameCS, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::SElement::ast\'"); + } + final /*@Nullable*/ /*@Thrown*/ EObject ast = at.getAst(); + final /*@NonNull*/ /*@Thrown*/ NamedElement oclAsType = ClassUtil.nonNullState((NamedElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_NamedElement_0)); + // property assignments + pathNameCS.setAst(oclAsType); return true; } @@ -1462,6 +1504,16 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer * map uC_ownsD { * y2 := y2; * }} + * for pathElementCS : source::PathElementCS in source::PathElementCS.allInstances() + * { + * map uPathElementCS_ast { + * pathElementCS := pathElementCS; + * }} + * for pathNameCS : source::PathNameCS in source::PathNameCS.allInstances() + * { + * map uPathNameCS_ast { + * pathNameCS := pathNameCS; + * }} * for z : source::Z in source::Z.allInstances() * { * map uD_1_refsB { @@ -1481,6 +1533,8 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer protected boolean MAP___root__() throws ReflectiveOperationException { // predicates final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver(); + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_PathElementCS_0 = idResolver.getClass(CLSSid_PathElementCS, null); + final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_PathNameCS_0 = idResolver.getClass(CLSSid_PathNameCS, null); final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_SRoot_1 = idResolver.getClass(CLSSid_SRoot, null); final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_X_8 = idResolver.getClass(CLSSid_X, null); final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_Y1_2 = idResolver.getClass(CLSSid_Y1, null); @@ -1612,22 +1666,36 @@ public class Source2Target_qvtp_qvtias extends AbstractCS2ASTransformer MAP_uC_ownsD(symbol_57); } } + final /*@NonNull*/ /*@NonInvalid*/ SetValue allInstances_19 = ClassifierAllInstancesOperation.INSTANCE.evaluate(executor, SET_CLSSid_PathElementCS, TYP_source_c_c_PathElementCS_0); + for (PathElementCS pathElementCS_1 : ValueUtil.typedIterable(PathElementCS.class, allInstances_19)) { + if (pathElementCS_1 != null) { + final /*@NonNull*/ /*@NonInvalid*/ PathElementCS symbol_60 = (PathElementCS)pathElementCS_1; + MAP_uPathElementCS_ast(symbol_60); + } + } + final /*@NonNull*/ /*@NonInvalid*/ SetValue allInstances_20 = ClassifierAllInstancesOperation.INSTANCE.evaluate(executor, SET_CLSSid_PathNameCS, TYP_source_c_c_PathNameCS_0); + for (PathNameCS pathNameCS_1 : ValueUtil.typedIterable(PathNameCS.class, allInstances_20)) { + if (pathNameCS_1 != null) { + final /*@NonNull*/ /*@NonInvalid*/ PathNameCS symbol_63 = (PathNameCS)pathNameCS_1; + MAP_uPathNameCS_ast(symbol_63); + } + } for (Z z_14 : ValueUtil.typedIterable(Z.class, allInstances_7)) { if (z_14 != null) { - final /*@NonNull*/ /*@NonInvalid*/ Z symbol_60 = (Z)z_14; - MAP_uD_1_refsB(symbol_60); + final /*@NonNull*/ /*@NonInvalid*/ Z symbol_66 = (Z)z_14; + MAP_uD_1_refsB(symbol_66); } } for (Z z_15 : ValueUtil.typedIterable(Z.class, allInstances_7)) { if (z_15 != null) { - final /*@NonNull*/ /*@NonInvalid*/ Z symbol_63 = (Z)z_15; - MAP_uD_0_refsC(symbol_63); + final /*@NonNull*/ /*@NonInvalid*/ Z symbol_69 = (Z)z_15; + MAP_uD_0_refsC(symbol_69); } } for (Z z_16 : ValueUtil.typedIterable(Z.class, allInstances_7)) { if (z_16 != null) { - final /*@NonNull*/ /*@NonInvalid*/ Z symbol_66 = (Z)z_16; - MAP_uD_1_toA(symbol_66); + final /*@NonNull*/ /*@NonInvalid*/ Z symbol_72 = (Z)z_16; + MAP_uD_1_toA(symbol_72); } } return true; diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathElementCS.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathElementCS.java index bd4f793fc..fa388fee7 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathElementCS.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathElementCS.java @@ -23,6 +23,7 @@ package example1.source; * </p> * <ul> * <li>{@link example1.source.PathElementCS#getName <em>Name</em>}</li> + * <li>{@link example1.source.PathElementCS#getPathName <em>Path Name</em>}</li> * </ul> * * @see example1.source.SourcePackage#getPathElementCS() @@ -56,4 +57,32 @@ public interface PathElementCS extends SElement { */ void setName(String value); + /** + * Returns the value of the '<em><b>Path Name</b></em>' container reference. + * It is bidirectional and its opposite is '{@link example1.source.PathNameCS#getPath <em>Path</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Path Name</em>' container reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Path Name</em>' container reference. + * @see #setPathName(PathNameCS) + * @see example1.source.SourcePackage#getPathElementCS_PathName() + * @see example1.source.PathNameCS#getPath + * @model opposite="path" transient="false" + * @generated + */ + PathNameCS getPathName(); + + /** + * Sets the value of the '{@link example1.source.PathElementCS#getPathName <em>Path Name</em>}' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Path Name</em>' container reference. + * @see #getPathName() + * @generated + */ + void setPathName(PathNameCS value); + } // PathElementCS diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathNameCS.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathNameCS.java index 7d9fd34bf..c5bc6dc5a 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathNameCS.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathNameCS.java @@ -24,6 +24,7 @@ import org.eclipse.emf.common.util.EList; * </p> * <ul> * <li>{@link example1.source.PathNameCS#getPath <em>Path</em>}</li> + * <li>{@link example1.source.PathNameCS#getContext <em>Context</em>}</li> * </ul> * * @see example1.source.SourcePackage#getPathNameCS() @@ -34,6 +35,7 @@ public interface PathNameCS extends SElement { /** * Returns the value of the '<em><b>Path</b></em>' containment reference list. * The list contents are of type {@link example1.source.PathElementCS}. + * It is bidirectional and its opposite is '{@link example1.source.PathElementCS#getPathName <em>Path Name</em>}'. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Path</em>' containment reference list isn't clear, @@ -42,9 +44,36 @@ public interface PathNameCS extends SElement { * <!-- end-user-doc --> * @return the value of the '<em>Path</em>' containment reference list. * @see example1.source.SourcePackage#getPathNameCS_Path() - * @model containment="true" required="true" + * @see example1.source.PathElementCS#getPathName + * @model opposite="pathName" containment="true" required="true" * @generated */ EList<PathElementCS> getPath(); + /** + * Returns the value of the '<em><b>Context</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Context</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Context</em>' reference. + * @see #setContext(SElement) + * @see example1.source.SourcePackage#getPathNameCS_Context() + * @model + * @generated + */ + SElement getContext(); + + /** + * Sets the value of the '{@link example1.source.PathNameCS#getContext <em>Context</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Context</em>' reference. + * @see #getContext() + * @generated + */ + void setContext(SElement value); + } // PathNameCS diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SElement.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SElement.java index 35f92e72f..0d93b7730 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SElement.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SElement.java @@ -27,7 +27,7 @@ import org.eclipse.emf.ecore.EObject; * </ul> * * @see example1.source.SourcePackage#getSElement() - * @model + * @model abstract="true" * @generated */ public interface SElement extends EObject { diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourceFactory.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourceFactory.java index 7d8252d39..61effd1cd 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourceFactory.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourceFactory.java @@ -77,15 +77,6 @@ public interface SourceFactory extends EFactory { SRoot createSRoot(); /** - * Returns a new object of class '<em>SElement</em>'. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @return a new object of class '<em>SElement</em>'. - * @generated - */ - SElement createSElement(); - - /** * Returns a new object of class '<em>Path Name CS</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourcePackage.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourcePackage.java index 9e0f86c07..15f206f8a 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourcePackage.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourcePackage.java @@ -499,13 +499,22 @@ public interface SourcePackage extends EPackage { int PATH_NAME_CS__PATH = SELEMENT_FEATURE_COUNT + 0; /** + * The feature id for the '<em><b>Context</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PATH_NAME_CS__CONTEXT = SELEMENT_FEATURE_COUNT + 1; + + /** * The number of structural features of the '<em>Path Name CS</em>' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int PATH_NAME_CS_FEATURE_COUNT = SELEMENT_FEATURE_COUNT + 1; + int PATH_NAME_CS_FEATURE_COUNT = SELEMENT_FEATURE_COUNT + 2; /** * The number of operations of the '<em>Path Name CS</em>' class. @@ -545,13 +554,22 @@ public interface SourcePackage extends EPackage { int PATH_ELEMENT_CS__NAME = SELEMENT_FEATURE_COUNT + 0; /** + * The feature id for the '<em><b>Path Name</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PATH_ELEMENT_CS__PATH_NAME = SELEMENT_FEATURE_COUNT + 1; + + /** * The number of structural features of the '<em>Path Element CS</em>' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int PATH_ELEMENT_CS_FEATURE_COUNT = SELEMENT_FEATURE_COUNT + 1; + int PATH_ELEMENT_CS_FEATURE_COUNT = SELEMENT_FEATURE_COUNT + 2; /** * The number of operations of the '<em>Path Element CS</em>' class. @@ -776,6 +794,17 @@ public interface SourcePackage extends EPackage { EReference getPathNameCS_Path(); /** + * Returns the meta object for the reference '{@link example1.source.PathNameCS#getContext <em>Context</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Context</em>'. + * @see example1.source.PathNameCS#getContext() + * @see #getPathNameCS() + * @generated + */ + EReference getPathNameCS_Context(); + + /** * Returns the meta object for class '{@link example1.source.PathElementCS <em>Path Element CS</em>}'. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -797,6 +826,17 @@ public interface SourcePackage extends EPackage { EAttribute getPathElementCS_Name(); /** + * Returns the meta object for the container reference '{@link example1.source.PathElementCS#getPathName <em>Path Name</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the container reference '<em>Path Name</em>'. + * @see example1.source.PathElementCS#getPathName() + * @see #getPathElementCS() + * @generated + */ + EReference getPathElementCS_PathName(); + + /** * Returns the factory that creates the instances of the model. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -996,6 +1036,14 @@ public interface SourcePackage extends EPackage { EReference PATH_NAME_CS__PATH = eINSTANCE.getPathNameCS_Path(); /** + * The meta object literal for the '<em><b>Context</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference PATH_NAME_CS__CONTEXT = eINSTANCE.getPathNameCS_Context(); + + /** * The meta object literal for the '{@link example1.source.impl.PathElementCSImpl <em>Path Element CS</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -1013,6 +1061,14 @@ public interface SourcePackage extends EPackage { */ EAttribute PATH_ELEMENT_CS__NAME = eINSTANCE.getPathElementCS_Name(); + /** + * The meta object literal for the '<em><b>Path Name</b></em>' container reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference PATH_ELEMENT_CS__PATH_NAME = eINSTANCE.getPathElementCS_PathName(); + } } //SourcePackage diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathElementCSImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathElementCSImpl.java index 4cc4fbce4..2f57c5417 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathElementCSImpl.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathElementCSImpl.java @@ -13,13 +13,17 @@ package example1.source.impl; import example1.source.PathElementCS; +import example1.source.PathNameCS; import example1.source.SourcePackage; import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; /** * <!-- begin-user-doc --> @@ -30,6 +34,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl; * </p> * <ul> * <li>{@link example1.source.impl.PathElementCSImpl#getName <em>Name</em>}</li> + * <li>{@link example1.source.impl.PathElementCSImpl#getPathName <em>Path Name</em>}</li> * </ul> * * @generated @@ -100,11 +105,98 @@ public class PathElementCSImpl extends SElementImpl implements PathElementCS { * <!-- end-user-doc --> * @generated */ + public PathNameCS getPathName() { + if (eContainerFeatureID() != SourcePackage.PATH_ELEMENT_CS__PATH_NAME) return null; + return (PathNameCS)eInternalContainer(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetPathName(PathNameCS newPathName, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newPathName, SourcePackage.PATH_ELEMENT_CS__PATH_NAME, msgs); + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setPathName(PathNameCS newPathName) { + if (newPathName != eInternalContainer() || (eContainerFeatureID() != SourcePackage.PATH_ELEMENT_CS__PATH_NAME && newPathName != null)) { + if (EcoreUtil.isAncestor(this, newPathName)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newPathName != null) + msgs = ((InternalEObject)newPathName).eInverseAdd(this, SourcePackage.PATH_NAME_CS__PATH, PathNameCS.class, msgs); + msgs = basicSetPathName(newPathName, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SourcePackage.PATH_ELEMENT_CS__PATH_NAME, newPathName, newPathName)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case SourcePackage.PATH_ELEMENT_CS__PATH_NAME: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetPathName((PathNameCS)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case SourcePackage.PATH_ELEMENT_CS__PATH_NAME: + return basicSetPathName(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case SourcePackage.PATH_ELEMENT_CS__PATH_NAME: + return eInternalContainer().eInverseRemove(this, SourcePackage.PATH_NAME_CS__PATH, PathNameCS.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case SourcePackage.PATH_ELEMENT_CS__NAME: return getName(); + case SourcePackage.PATH_ELEMENT_CS__PATH_NAME: + return getPathName(); } return super.eGet(featureID, resolve, coreType); } @@ -120,6 +212,9 @@ public class PathElementCSImpl extends SElementImpl implements PathElementCS { case SourcePackage.PATH_ELEMENT_CS__NAME: setName((String)newValue); return; + case SourcePackage.PATH_ELEMENT_CS__PATH_NAME: + setPathName((PathNameCS)newValue); + return; } super.eSet(featureID, newValue); } @@ -135,6 +230,9 @@ public class PathElementCSImpl extends SElementImpl implements PathElementCS { case SourcePackage.PATH_ELEMENT_CS__NAME: setName(NAME_EDEFAULT); return; + case SourcePackage.PATH_ELEMENT_CS__PATH_NAME: + setPathName((PathNameCS)null); + return; } super.eUnset(featureID); } @@ -149,6 +247,8 @@ public class PathElementCSImpl extends SElementImpl implements PathElementCS { switch (featureID) { case SourcePackage.PATH_ELEMENT_CS__NAME: return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case SourcePackage.PATH_ELEMENT_CS__PATH_NAME: + return getPathName() != null; } return super.eIsSet(featureID); } diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathNameCSImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathNameCSImpl.java index 1032fa284..00e37d4e0 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathNameCSImpl.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathNameCSImpl.java @@ -14,10 +14,12 @@ package example1.source.impl; import example1.source.PathElementCS; import example1.source.PathNameCS; +import example1.source.SElement; import example1.source.SourcePackage; import java.util.Collection; +import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EList; @@ -25,7 +27,8 @@ import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; -import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; import org.eclipse.emf.ecore.util.InternalEList; /** @@ -37,6 +40,7 @@ import org.eclipse.emf.ecore.util.InternalEList; * </p> * <ul> * <li>{@link example1.source.impl.PathNameCSImpl#getPath <em>Path</em>}</li> + * <li>{@link example1.source.impl.PathNameCSImpl#getContext <em>Context</em>}</li> * </ul> * * @generated @@ -53,6 +57,16 @@ public class PathNameCSImpl extends SElementImpl implements PathNameCS { protected EList<PathElementCS> path; /** + * The cached value of the '{@link #getContext() <em>Context</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getContext() + * @generated + * @ordered + */ + protected SElement context; + + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated @@ -78,7 +92,7 @@ public class PathNameCSImpl extends SElementImpl implements PathNameCS { */ public EList<PathElementCS> getPath() { if (path == null) { - path = new EObjectContainmentEList<PathElementCS>(PathElementCS.class, this, SourcePackage.PATH_NAME_CS__PATH); + path = new EObjectContainmentWithInverseEList<PathElementCS>(PathElementCS.class, this, SourcePackage.PATH_NAME_CS__PATH, SourcePackage.PATH_ELEMENT_CS__PATH_NAME); } return path; } @@ -88,6 +102,59 @@ public class PathNameCSImpl extends SElementImpl implements PathNameCS { * <!-- end-user-doc --> * @generated */ + public SElement getContext() { + if (context != null && context.eIsProxy()) { + InternalEObject oldContext = (InternalEObject)context; + context = (SElement)eResolveProxy(oldContext); + if (context != oldContext) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, SourcePackage.PATH_NAME_CS__CONTEXT, oldContext, context)); + } + } + return context; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SElement basicGetContext() { + return context; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setContext(SElement newContext) { + SElement oldContext = context; + context = newContext; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SourcePackage.PATH_NAME_CS__CONTEXT, oldContext, context)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case SourcePackage.PATH_NAME_CS__PATH: + return ((InternalEList<InternalEObject>)(InternalEList<?>)getPath()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { @@ -107,6 +174,9 @@ public class PathNameCSImpl extends SElementImpl implements PathNameCS { switch (featureID) { case SourcePackage.PATH_NAME_CS__PATH: return getPath(); + case SourcePackage.PATH_NAME_CS__CONTEXT: + if (resolve) return getContext(); + return basicGetContext(); } return super.eGet(featureID, resolve, coreType); } @@ -124,6 +194,9 @@ public class PathNameCSImpl extends SElementImpl implements PathNameCS { getPath().clear(); getPath().addAll((Collection<? extends PathElementCS>)newValue); return; + case SourcePackage.PATH_NAME_CS__CONTEXT: + setContext((SElement)newValue); + return; } super.eSet(featureID, newValue); } @@ -139,6 +212,9 @@ public class PathNameCSImpl extends SElementImpl implements PathNameCS { case SourcePackage.PATH_NAME_CS__PATH: getPath().clear(); return; + case SourcePackage.PATH_NAME_CS__CONTEXT: + setContext((SElement)null); + return; } super.eUnset(featureID); } @@ -153,6 +229,8 @@ public class PathNameCSImpl extends SElementImpl implements PathNameCS { switch (featureID) { case SourcePackage.PATH_NAME_CS__PATH: return path != null && !path.isEmpty(); + case SourcePackage.PATH_NAME_CS__CONTEXT: + return context != null; } return super.eIsSet(featureID); } diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SElementImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SElementImpl.java index 6ad6f0fd9..d616a264a 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SElementImpl.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SElementImpl.java @@ -35,7 +35,7 @@ import example1.source.SourcePackage; * * @generated */ -public class SElementImpl extends MinimalEObjectImpl.Container implements SElement { +public abstract class SElementImpl extends MinimalEObjectImpl.Container implements SElement { /** * The cached value of the '{@link #getAst() <em>Ast</em>}' reference. * <!-- begin-user-doc --> diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourceFactoryImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourceFactoryImpl.java index b10d424fe..abfc4d25d 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourceFactoryImpl.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourceFactoryImpl.java @@ -77,7 +77,6 @@ public class SourceFactoryImpl extends EFactoryImpl implements SourceFactory { case SourcePackage.Y2: return createY2(); case SourcePackage.Z: return createZ(); case SourcePackage.SROOT: return createSRoot(); - case SourcePackage.SELEMENT: return createSElement(); case SourcePackage.PATH_NAME_CS: return createPathNameCS(); case SourcePackage.PATH_ELEMENT_CS: return createPathElementCS(); default: @@ -140,16 +139,6 @@ public class SourceFactoryImpl extends EFactoryImpl implements SourceFactory { * <!-- end-user-doc --> * @generated */ - public SElement createSElement() { - SElementImpl sElement = new SElementImpl(); - return sElement; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ public PathNameCS createPathNameCS() { PathNameCSImpl pathNameCS = new PathNameCSImpl(); return pathNameCS; diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourcePackageImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourcePackageImpl.java index b47c04d60..c0a1da2dc 100644 --- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourcePackageImpl.java +++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourcePackageImpl.java @@ -341,6 +341,15 @@ public class SourcePackageImpl extends EPackageImpl implements SourcePackage { * <!-- end-user-doc --> * @generated */ + public EReference getPathNameCS_Context() { + return (EReference)pathNameCSEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public EClass getPathElementCS() { return pathElementCSEClass; } @@ -359,6 +368,15 @@ public class SourcePackageImpl extends EPackageImpl implements SourcePackage { * <!-- end-user-doc --> * @generated */ + public EReference getPathElementCS_PathName() { + return (EReference)pathElementCSEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public SourceFactory getSourceFactory() { return (SourceFactory)getEFactoryInstance(); } @@ -409,9 +427,11 @@ public class SourcePackageImpl extends EPackageImpl implements SourcePackage { pathNameCSEClass = createEClass(PATH_NAME_CS); createEReference(pathNameCSEClass, PATH_NAME_CS__PATH); + createEReference(pathNameCSEClass, PATH_NAME_CS__CONTEXT); pathElementCSEClass = createEClass(PATH_ELEMENT_CS); createEAttribute(pathElementCSEClass, PATH_ELEMENT_CS__NAME); + createEReference(pathElementCSEClass, PATH_ELEMENT_CS__PATH_NAME); } /** @@ -474,14 +494,16 @@ public class SourcePackageImpl extends EPackageImpl implements SourcePackage { initEClass(sRootEClass, SRoot.class, "SRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getSRoot_OwnedX(), this.getX(), null, "ownedX", null, 0, -1, SRoot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEClass(sElementEClass, SElement.class, "SElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEClass(sElementEClass, SElement.class, "SElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getSElement_Ast(), ecorePackage.getEObject(), null, "ast", null, 0, 1, SElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(pathNameCSEClass, PathNameCS.class, "PathNameCS", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEReference(getPathNameCS_Path(), this.getPathElementCS(), null, "path", null, 1, -1, PathNameCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getPathNameCS_Path(), this.getPathElementCS(), this.getPathElementCS_PathName(), "path", null, 1, -1, PathNameCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getPathNameCS_Context(), this.getSElement(), null, "context", null, 0, 1, PathNameCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(pathElementCSEClass, PathElementCS.class, "PathElementCS", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEAttribute(getPathElementCS_Name(), ecorePackage.getEString(), "name", null, 0, 1, PathElementCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getPathElementCS_PathName(), this.getPathNameCS(), this.getPathNameCS_Path(), "pathName", null, 0, 1, PathElementCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); // Create resource createResource(eNS_URI); |