diff options
author | Ed Willink | 2016-06-28 10:41:56 +0000 |
---|---|---|
committer | Ed Willink | 2016-07-17 16:32:49 +0000 |
commit | 77521fd0f0d5bc2b1026660182330554cb843272 (patch) | |
tree | 2ee6304016b269e877e1d729e4790918c1084fb1 | |
parent | 296b189360e50039d7da1b6b21fb5b2a0715a0dd (diff) | |
download | org.eclipse.qvtd-77521fd0f0d5bc2b1026660182330554cb843272.tar.gz org.eclipse.qvtd-77521fd0f0d5bc2b1026660182330554cb843272.tar.xz org.eclipse.qvtd-77521fd0f0d5bc2b1026660182330554cb843272.zip |
[486722] Provide names for operation input edges
-rw-r--r-- | plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ExpressionAnalyzer.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ExpressionAnalyzer.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ExpressionAnalyzer.java index 0c39d5f91..338d6695b 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ExpressionAnalyzer.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ExpressionAnalyzer.java @@ -661,10 +661,12 @@ public class ExpressionAnalyzer extends AbstractExtendingQVTimperativeVisitor<@N List<OCLExpression> ownedArguments = operationCallExp.getOwnedArguments(); int iSize = ownedArguments.size(); @NonNull SimpleNode[] argNodes = new @NonNull SimpleNode[iSize]; + @Nullable String [] argNames = new @Nullable String[iSize]; for (int i = 0; i < iSize; i++) { argNodes[i] = analyze(ownedArguments.get(i)); + argNames[i] = "«" + referredOperation.getOwnedParameters().get(i).getName() + "»"; } - SimpleNode operationNode = createConnectedOperationNode(operationName, operationCallExp, argNodes); + SimpleNode operationNode = createConnectedOperationNode(operationName, argNames, operationCallExp, argNodes); return operationNode; } SimpleNode sourceNode = analyze(ownedSource); @@ -689,9 +691,12 @@ public class ExpressionAnalyzer extends AbstractExtendingQVTimperativeVisitor<@N List<OCLExpression> ownedArguments = operationCallExp.getOwnedArguments(); int iSize = ownedArguments.size(); @NonNull SimpleNode[] argNodes = new @NonNull SimpleNode[iSize+1]; + @Nullable String [] argNames = new @Nullable String[iSize+1]; argNodes[0] = sourceNode; + argNames[0] = "«self»"; for (int i = 0; i < iSize; i++) { argNodes[i+1] = analyze(ownedArguments.get(i)); + argNames[i+1] = "«" + referredOperation.getOwnedParameters().get(i).getName() + "»"; } if ("<>".equals(operationName)) { operationName.toString(); @@ -700,7 +705,7 @@ public class ExpressionAnalyzer extends AbstractExtendingQVTimperativeVisitor<@N if (operationNode == null) { operationNode = createOperationNode(operationName, operationCallExp, argNodes); for (int i = 0; i <= iSize; i++) { - createArgumentEdge(argNodes[i], /*iSize > 1 ?*/ "«arg" + i + "»"/*: null*/, operationNode); + createArgumentEdge(argNodes[i], argNames[i], operationNode); } if (referredOperation.getBodyExpression() != null) { OperationRegion operationRegion = context.getSuperRegion().analyzeOperation(operationCallExp); @@ -748,11 +753,14 @@ public class ExpressionAnalyzer extends AbstractExtendingQVTimperativeVisitor<@N public @NonNull SimpleNode visitShadowExp(@NonNull ShadowExp shadowExp) { List<ShadowPart> ownedParts = shadowExp.getOwnedParts(); int iSize = ownedParts.size(); - @NonNull SimpleNode[] partNodes = new @NonNull SimpleNode[iSize]; + @NonNull SimpleNode [] partNodes = new @NonNull SimpleNode[iSize]; + @Nullable String [] partNames = new @Nullable String[iSize]; for (int i = 0; i < iSize; i++) { - partNodes[i] = analyze(ownedParts.get(i)); + ShadowPart shadowPart = ownedParts.get(i); + partNodes[i] = analyze(shadowPart); + partNames[i] = shadowPart.getName(); } - SimpleNode operationNode = createConnectedOperationNode(ClassUtil.nonNullState(shadowExp.getType().getName()), shadowExp, partNodes); + SimpleNode operationNode = createConnectedOperationNode(ClassUtil.nonNullState(shadowExp.getType().getName()), partNames, shadowExp, partNodes); return operationNode; } |