commit | b7431272a29747f0d2797f1d46e83ff81f91f8e2 | [log] [tgz] |
---|---|---|
author | Ed Willink <ed@willink.me.uk> | Tue Feb 28 18:13:35 2017 +0000 |
committer | Ed Willink <ed@willink.me.uk> | Tue Feb 28 18:32:08 2017 +0000 |
tree | 8fcddec42b5aba3a30921aef69bb984cd6c542c0 | |
parent | ecfdd4e428ceb6220659d45f719e56c7f254f310 [diff] |
[512737] Fix parsing of opposite SetStatements
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/utilities/QVTimperativeHelper.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/utilities/QVTimperativeHelper.java index 08f2ef0..9c0b07f 100644 --- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/utilities/QVTimperativeHelper.java +++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/utilities/QVTimperativeHelper.java
@@ -178,7 +178,7 @@ asSetAssignment.setOwnedExpression(asValueExpression); asSetAssignment.setIsPartial(isPartial); asSetAssignment.setIsNotify(isNotify); - assert isPartial == ((asSetAssignment.getTargetProperty().getType() instanceof CollectionType) && !(asValueExpression.getType() instanceof CollectionType)); // FIXME inadequate for nested types but good for initial debugging + assert isPartial == ((QVTimperativeUtil.getTargetProperty(asSetAssignment).getType() instanceof CollectionType) && !(asValueExpression.getType() instanceof CollectionType)); // FIXME inadequate for nested types but good for initial debugging return asSetAssignment; }
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/utilities/QVTimperativeToStringVisitor.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/utilities/QVTimperativeToStringVisitor.java index e04aa0b..fe56593 100644 --- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/utilities/QVTimperativeToStringVisitor.java +++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/utilities/QVTimperativeToStringVisitor.java
@@ -321,7 +321,10 @@ append("set "); appendName(asSetStatement.getTargetVariable()); append("."); - appendName(QVTimperativeUtil.getTargetProperty(asSetStatement)); + if (asSetStatement.isIsOpposite()) { + append("~"); + } + appendName(asSetStatement.getTargetProperty()); append(" := "); safeVisit(asSetStatement.getOwnedExpression()); return null;
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPostOrderVisitor.java b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPostOrderVisitor.java index b70af5b..539548d 100644 --- a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPostOrderVisitor.java +++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPostOrderVisitor.java
@@ -311,8 +311,6 @@ setStatement.setIsOpposite(isImplicit); ExpCS csInitializer = csElement.getOwnedExpression(); OCLExpression target = csInitializer != null ? context.visitLeft2Right(OCLExpression.class, csInitializer) : null; - setStatement.setTargetProperty(targetProperty); - // propertyAssignment.setIsOpposite(target instanceof FeatureCallExp); // FIXME isOpposite setStatement.setOwnedExpression(target); // pAssignments.add(assignment); }