[463396] - CCE in DecorationNodeImpl.eSet (159)
diff --git a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/evaluator/QvtOperationalEvaluationVisitorImpl.java b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/evaluator/QvtOperationalEvaluationVisitorImpl.java
index e731586..e71d3dd 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/evaluator/QvtOperationalEvaluationVisitorImpl.java
+++ b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/evaluator/QvtOperationalEvaluationVisitorImpl.java
@@ -1125,6 +1125,9 @@
// Wrap the result of the expression in an OperationCallResult object.
// This type breaks control flow, so the value arrives directly at its
// calling operation, where it is unwrapped again and returned.
+ if (value instanceof OperationCallResult) {
+ return value;
+ }
return new OperationCallResult(value, getOperationalEvaluationEnv());
}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/bug463396/bug463396.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/bug463396/bug463396.qvto
new file mode 100644
index 0000000..3525523
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/bug463396/bug463396.qvto
@@ -0,0 +1,17 @@
+modeltype ecore "strict" uses ecore('http://www.eclipse.org/emf/2002/Ecore');
+
+transformation bug463396();
+
+main() {
+ var v := object EClass{};
+ v.name := test();
+ assert fatal (v.name = 'foo');
+}
+
+helper test() : String {
+ return if true then
+ return switch {
+ case (true) 'foo';
+ }
+ endif
+}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java
index 6afca3a..72a7de0 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java
@@ -645,6 +645,7 @@
new FilesToFilesData("bug440514"), //$NON-NLS-1$
new FilesToFilesData("bug415024"), //$NON-NLS-1$
new FilesToFilesData("bug463395"), //$NON-NLS-1$
+ new FilesToFilesData("bug463396"), //$NON-NLS-1$
};
}