From 53c50b024ea59bb0cf944b7c48fba0d64aec15fb Mon Sep 17 00:00:00 2001 From: Ed Willink Date: Sun, 6 Nov 2016 15:26:12 +0000 Subject: [506806] Preserve Node utility when partitioning --- .../qvtd/compiler/internal/qvtp2qvts/AbstractMappingRegion.java | 3 +-- .../eclipse/qvtd/compiler/internal/qvtp2qvts/BasicMappingRegion.java | 3 ++- .../compiler/internal/qvts2qvts/partitioner/PartitioningVisitor.java | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractMappingRegion.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractMappingRegion.java index 9987f1a48..cbe286dae 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractMappingRegion.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractMappingRegion.java @@ -354,7 +354,6 @@ public abstract class AbstractMappingRegion extends AbstractRegion implements Ma } assert debugHeadNodes.equals(new HashSet<>(headNodes)); // - computeUtilities(headNodes); return headNodes; } @@ -438,7 +437,7 @@ public abstract class AbstractMappingRegion extends AbstractRegion implements Ma return unconditionalNodes; } - private void computeUtilities(@NonNull Iterable<@NonNull Node> headNodes) { // FIXME remove assertions after 1-Jan-2017 + protected void computeUtilities(@NonNull Iterable<@NonNull Node> headNodes) { // FIXME remove assertions after 1-Jan-2017 Set<@NonNull Node> stronglyMatchedNodes = computeStronglyMatchedNodes(headNodes); Set<@NonNull Node> unconditionalNodes = computeUnconditionalNodes(headNodes); Set<@NonNull Node> conditionalNodes = computeConditionalNodes(unconditionalNodes); diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/BasicMappingRegion.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/BasicMappingRegion.java index 69e4d4dca..ffb604896 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/BasicMappingRegion.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/BasicMappingRegion.java @@ -490,7 +490,8 @@ public class BasicMappingRegion extends AbstractMappingRegion analyzeAssignmentValues(); analyzeComplexPredicates(); // - getHeadNodes(); + List<@NonNull Node> headNodes = getHeadNodes(); + computeUtilities(headNodes); } /** diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/PartitioningVisitor.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/PartitioningVisitor.java index ea1bd48eb..c44ba9b8e 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/PartitioningVisitor.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/PartitioningVisitor.java @@ -170,6 +170,7 @@ class PartitioningVisitor extends AbstractVisitor<@Nullable Visitable> partialNode = node.createNode(nodeRole, partialRegion); } oldNode2partialNode.put(node, partialNode); + partialNode.setUtility(node.getUtility()); for (@NonNull TypedElement typedElement : node.getTypedElements()) { partialNode.addTypedElement(typedElement); } @@ -184,6 +185,7 @@ class PartitioningVisitor extends AbstractVisitor<@Nullable Visitable> }; Node partialNode = variableNode.createNode(nodeRole, partialRegion); oldNode2partialNode.put(variableNode, partialNode); + partialNode.setUtility(variableNode.getUtility()); for (@NonNull TypedElement typedElement : variableNode.getTypedElements()) { partialNode.addTypedElement(typedElement); } -- cgit v1.2.3