[486722] Add missing LetExp support
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/AbstractRegion2Mapping.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/AbstractRegion2Mapping.java
index d0763f8..804321a 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/AbstractRegion2Mapping.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/AbstractRegion2Mapping.java
@@ -21,6 +21,7 @@
import org.eclipse.ocl.pivot.CallExp;
import org.eclipse.ocl.pivot.CollectionType;
import org.eclipse.ocl.pivot.CompleteClass;
+import org.eclipse.ocl.pivot.LetExp;
import org.eclipse.ocl.pivot.OCLExpression;
import org.eclipse.ocl.pivot.Operation;
import org.eclipse.ocl.pivot.OppositePropertyCallExp;
@@ -285,6 +286,9 @@
if (qvtpTypedElement instanceof VariableExp) {
return getNode(((VariableExp)qvtpTypedElement).getReferredVariable());
}
+ if (qvtpTypedElement instanceof LetExp) {
+ return getNode(((LetExp)qvtpTypedElement).getOwnedIn());
+ }
if (qvtpTypedElement instanceof OppositePropertyCallExp) {
OppositePropertyCallExp propertyCallExp = (OppositePropertyCallExp)qvtpTypedElement;
Node sourceNode = getNode(propertyCallExp.getOwnedSource());
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicRegion2Mapping.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicRegion2Mapping.java
index 83a16b0..ce4e0c6 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicRegion2Mapping.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicRegion2Mapping.java
@@ -39,6 +39,7 @@
import org.eclipse.ocl.pivot.IterateExp;
import org.eclipse.ocl.pivot.Iteration;
import org.eclipse.ocl.pivot.IteratorExp;
+import org.eclipse.ocl.pivot.LetExp;
import org.eclipse.ocl.pivot.MapLiteralExp;
import org.eclipse.ocl.pivot.MapLiteralPart;
import org.eclipse.ocl.pivot.MapType;
@@ -380,6 +381,14 @@
}
@Override
+ public @NonNull OCLExpression visitLetExp(@NonNull LetExp pLetExp) {
+ Variable asVariable = createVariable(ClassUtil.nonNull(pLetExp.getOwnedVariable()));
+ OCLExpression asInExpression = create(pLetExp.getOwnedIn());
+ assert asInExpression != null;
+ return helper.createLetExp(asVariable, asInExpression);
+ }
+
+ @Override
public @NonNull OCLExpression visitMapLiteralExp(@NonNull MapLiteralExp pMapLiteralExp) {
List<@NonNull MapLiteralPart> clonedParts = new ArrayList<@NonNull MapLiteralPart>();
for (@NonNull MapLiteralPart pPart : ClassUtil.nullFree(pMapLiteralExp.getOwnedParts())) {