diff options
author | Ed Seidewitz | 2015-09-26 23:56:04 +0000 |
---|---|---|
committer | Arnaud Cuccuru | 2015-10-28 17:33:42 +0000 |
commit | d0bf3093667025cd7256b07d77d8497c760679d4 (patch) | |
tree | bb916f9487e33463ca376efcbd851890e9533db6 | |
parent | 757e885af541fe37d0d1bd50456bb57095a78b11 (diff) | |
download | org.eclipse.papyrus-d0bf3093667025cd7256b07d77d8497c760679d4.tar.gz org.eclipse.papyrus-d0bf3093667025cd7256b07d77d8497c760679d4.tar.xz org.eclipse.papyrus-d0bf3093667025cd7256b07d77d8497c760679d4.zip |
Corrected the mapping of feature left-hand sides
- Added a missing object flow into the write action value pin, in the
case of writing a multi-valued object property.
Change-Id: I191a2337783290ad1bb5a73d8b061ffcd52252c4
Signed-off-by: Ed Seidewitz <ed-s@modeldriven.com>
-rw-r--r-- | plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto b/plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto index b2cac4b911f..3f8c550cfe7 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto @@ -2076,11 +2076,13 @@ helper SyntaxElement::mapPropertyAssignment(property_ : Property, objectSource : region.edge := graph.edges; var objectInputPin := new InputPin(region, region.name + ".input(" + nameOf(objectSource) + ")", featuringClassifier, 1, 1); + var inputNode := new ExpansionNode(nameOf(valueSource), region, true); new ObjectFlow(region, objectInputPin, writeAction._'object'); + new ObjectFlow(region, inputNode, writeAction.value); graph.nodes := region; - graph.nodes += var inputNode ::= new ExpansionNode(nameOf(valueSource), region, true); - graph.edges += new ObjectFlow(objectSource, objectInputPin); + graph.nodes += inputNode; + graph.edges := new ObjectFlow(objectSource, objectInputPin); graph.edges += new ObjectFlow(valueSource, inputNode); } else { @@ -2207,7 +2209,7 @@ helper LeftHandSide::mapFeatureLeftHandSide(inout graph : LhsGraph, objectSource if objectResultSource = null then { var expressionGraph := feature.expression.map toActivityGraph(); objectResultSource := expressionGraph.resultSource; - graph.controlTarget := expressionGraph.addStructuredActivityNodeTo(graph, "Expression(LeftHandSide(" + nameOf(objectResultSource) + "))"); + graph.controlTarget := expressionGraph.addStructuredActivityNodeTo(graph, "Expression(LeftHandSide(" + property_.qualifiedName + "))"); } endif; var index := self.index(); var resultNode : ActivityNode; @@ -2220,7 +2222,7 @@ helper LeftHandSide::mapFeatureLeftHandSide(inout graph : LhsGraph, objectSource if rhsUpper = 0 then { resultNode := clearAction.result; } else { - graph.nodes += graph.resultSource := new ForkNode("LeftHandSide(" + nameOf(objectResultSource) + ")"); + graph.nodes += graph.resultSource := new ForkNode("LeftHandSide(" + property_.qualifiedName + ")"); graph.assignmentTarget := graph.resultSource; // Place the property assignment mapping in a structured activity node to insure @@ -2238,7 +2240,7 @@ helper LeftHandSide::mapFeatureLeftHandSide(inout graph : LhsGraph, objectSource var indexResultSource := indexSource; if indexResultSource = null then { var indexGraph := index.map toActivityGraph(); - var indexNode := indexGraph.addStructuredActivityNodeTo(graph, "Index(LeftHandSide(" + nameOf(objectResultSource) + ")"); + var indexNode := indexGraph.addStructuredActivityNodeTo(graph, "Index(LeftHandSide(" + property_.qualifiedName + ")"); if graph.controlTarget = null then { graph.controlTarget := indexNode; } else { @@ -2264,7 +2266,7 @@ helper LeftHandSide::mapFeatureLeftHandSide(inout graph : LhsGraph, objectSource graph.edges += new ObjectFlow(indexFork, removeAction.removeAt); graph.nodes += var writeAction ::= new AddStructuralFeatureValueAction(property_, false, unlimitedNaturalType); - graph.nodes += graph.assignmentTarget := graph.resultSource := new ForkNode("LeftHandSide(" + nameOf(objectResultSource) + ")"); + graph.nodes += graph.assignmentTarget := graph.resultSource := new ForkNode("LeftHandSide(" + property_.qualifiedName + ")"); graph.edges += new ObjectFlow(removeAction.result, writeAction._'object'); graph.edges += new ObjectFlow(graph.resultSource, writeAction.value); resultNode := writeAction.result; |