diff options
author | Ed Willink | 2016-11-14 16:05:22 +0000 |
---|---|---|
committer | Ed Willink | 2016-11-16 11:07:42 +0000 |
commit | dbb05f449dfc92818f33df8685da459bd7a9876f (patch) | |
tree | 0e7749c144cdfd7de51393535aeddc4420e58aa7 | |
parent | 64c60746051ff04805efb2826dd43e37b396f075 (diff) | |
download | org.eclipse.qvtd-dbb05f449dfc92818f33df8685da459bd7a9876f.tar.gz org.eclipse.qvtd-dbb05f449dfc92818f33df8685da459bd7a9876f.tar.xz org.eclipse.qvtd-dbb05f449dfc92818f33df8685da459bd7a9876f.zip |
[507414] Introduce qvtp2qvts.analysis package
37 files changed, 80 insertions, 60 deletions
diff --git a/plugins/org.eclipse.qvtd.compiler/META-INF/MANIFEST.MF b/plugins/org.eclipse.qvtd.compiler/META-INF/MANIFEST.MF index 92dcc8ff9..0868652d9 100644 --- a/plugins/org.eclipse.qvtd.compiler/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.qvtd.compiler/META-INF/MANIFEST.MF @@ -22,9 +22,11 @@ Export-Package: org.eclipse.qvtd.compiler, org.eclipse.qvtd.compiler.internal.qvtc2qvtu, org.eclipse.qvtd.compiler.internal.qvtm2qvtp, org.eclipse.qvtd.compiler.internal.qvtp2qvts, + org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis, org.eclipse.qvtd.compiler.internal.qvtr2qvtc, org.eclipse.qvtd.compiler.internal.qvts2qvti, org.eclipse.qvtd.compiler.internal.qvts2qvts, + org.eclipse.qvtd.compiler.internal.qvts2qvts.partitioner, org.eclipse.qvtd.compiler.internal.qvts2qvts.splitter, org.eclipse.qvtd.compiler.internal.qvtu2qvtm, org.eclipse.qvtd.compiler.internal.utilities diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractRegion.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractRegion.java index b09916377..a3c8b8a54 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractRegion.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractRegion.java @@ -31,6 +31,7 @@ import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.ocl.pivot.utilities.StringUtil; import org.eclipse.qvtd.compiler.CompilerProblem; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvts2qvti.QVTs2QVTiVisitor; import org.eclipse.qvtd.compiler.internal.qvts2qvts.Region2Depth; import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameBuilder; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractScheduledRegion.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractScheduledRegion.java index ad468043a..b2a1491d2 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractScheduledRegion.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AbstractScheduledRegion.java @@ -22,6 +22,7 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.ocl.pivot.CompleteClass; import org.eclipse.ocl.pivot.Property; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvts2qvti.QVTs2QVTiVisitor; import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameBuilder; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; @@ -46,7 +47,7 @@ public abstract class AbstractScheduledRegion extends AbstractRegion implements /** * The per-class node connections that unite a set of sources via a shared connection. */ - private final @NonNull Map<@NonNull ClassDatumAnalysis, @NonNull Map<@NonNull Set<@NonNull Node>, @NonNull NodeConnection>> classDatumAnalysis2nodes2nodeConnections = new HashMap<@NonNull ClassDatumAnalysis, @NonNull Map<@NonNull Set<@NonNull Node>, @NonNull NodeConnection>>(); + private final @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Map<@NonNull Set<@NonNull Node>, @NonNull NodeConnection>> classDatumAnalysis2nodes2nodeConnections = new HashMap<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Map<@NonNull Set<@NonNull Node>, @NonNull NodeConnection>>(); /** * The edge connections that unite a set of sources via a shared connection. diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AssignmentSorter.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AssignmentSorter.java index 573226b91..65c65ee1d 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AssignmentSorter.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/AssignmentSorter.java @@ -12,7 +12,6 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -28,7 +27,7 @@ import org.eclipse.ocl.pivot.Property; import org.eclipse.ocl.pivot.Variable; import org.eclipse.ocl.pivot.VariableDeclaration; import org.eclipse.ocl.pivot.VariableExp; -import org.eclipse.ocl.pivot.utilities.ClassUtil; +import org.eclipse.ocl.pivot.utilities.NameUtil.ToStringComparator; import org.eclipse.ocl.pivot.utilities.PivotUtil; import org.eclipse.ocl.pivot.utilities.TreeIterable; import org.eclipse.qvtd.pivot.qvtcore.Assignment; @@ -45,18 +44,6 @@ import org.eclipse.qvtd.pivot.qvtcore.utilities.QVTcoreUtil; */ public class AssignmentSorter { - public static final class ToStringComparator implements Comparator<@NonNull Object> - { - public static final @NonNull ToStringComparator INSTANCE = new ToStringComparator(); - - @Override - public int compare(@NonNull Object o1, @NonNull Object o2) { - String s1 = o1.toString(); - String s2 = o2.toString(); - return ClassUtil.safeCompareTo(s1, s2); - } - } - private static @Nullable Variable getTargetVariable(@NonNull NavigationAssignment navigationAssignment) { OCLExpression slotExpression = navigationAssignment.getSlotExpression(); if (slotExpression instanceof VariableExp) { @@ -72,7 +59,7 @@ public class AssignmentSorter /** * Nested Map for each known NavigationAssignment from each RealizedVariable to its Property to the NavigationAssignment. - * FIXME Not RealizedVariable becuase of Adolfo's folded middle + * FIXME Not RealizedVariable because of Adolfo's folded middle */ protected final @NonNull Map<@NonNull Variable, @NonNull Map<@NonNull Property, @NonNull NavigationAssignment>> realizedVariable2property2navigationAssignment = new HashMap<>(); 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 ffb604896..0b560cf75 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 @@ -32,6 +32,7 @@ import org.eclipse.ocl.pivot.VariableExp; import org.eclipse.ocl.pivot.ids.OperationId; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.PivotUtil; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.pivot.qvtbase.Domain; import org.eclipse.qvtd.pivot.qvtbase.Predicate; import org.eclipse.qvtd.pivot.qvtbase.utilities.QVTbaseUtil; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/BasicNodeConnection.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/BasicNodeConnection.java index f9ab1e8de..e3f4cd6e7 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/BasicNodeConnection.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/BasicNodeConnection.java @@ -19,6 +19,7 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.ocl.pivot.CollectionType; import org.eclipse.ocl.pivot.Type; import org.eclipse.ocl.pivot.ids.IdResolver; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameBuilder; import org.eclipse.qvtd.pivot.qvtbase.graphs.GraphStringBuilder; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/CyclicScheduledRegion.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/CyclicScheduledRegion.java index fe109c32a..56cf2d189 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/CyclicScheduledRegion.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/CyclicScheduledRegion.java @@ -20,6 +20,7 @@ import java.util.Set; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameBuilder; import org.eclipse.qvtd.pivot.qvtbase.graphs.GraphStringBuilder; @@ -170,7 +171,7 @@ public class CyclicScheduledRegion extends AbstractScheduledRegion // // Identify the same-typed passed connections to be merged. // - Map<@NonNull ClassDatumAnalysis, @NonNull Set<@NonNull NodeConnection>> classDatumAnalysis2connections = new HashMap<@NonNull ClassDatumAnalysis, @NonNull Set<@NonNull NodeConnection>>(); + Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Set<@NonNull NodeConnection>> classDatumAnalysis2connections = new HashMap<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Set<@NonNull NodeConnection>>(); for (@NonNull Region innerRegion : getRegions()) { for (@NonNull NodeConnection connection : innerRegion.getIncomingPassedConnections()) { ClassDatumAnalysis classDatumAnalysis = connection.getClassDatumAnalysis(); diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DatumCaches.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DatumCaches.java index e6c5651a0..d847ef092 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DatumCaches.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DatumCaches.java @@ -45,6 +45,8 @@ import org.eclipse.ocl.pivot.VariableExp; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.FeatureFilter; import org.eclipse.ocl.pivot.utilities.PivotUtil; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ContainmentAnalysis; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.InheritanceAnalysis; import org.eclipse.qvtd.pivot.qvtbase.Rule; import org.eclipse.qvtd.pivot.qvtbase.Transformation; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; @@ -80,9 +82,9 @@ public class DatumCaches private @NonNull Map<@NonNull TypedModel, @NonNull Map<org.eclipse.ocl.pivot.@NonNull CompleteClass, @NonNull ClassDatum>> typedModel2completeClass2classDatum = new HashMap<>(); private @NonNull Map<@NonNull ClassDatum, @NonNull Map<@NonNull Property, @NonNull PropertyDatum>> classDatum2property2propertyDatum = new HashMap<>(); - public DatumCaches(@NonNull RootDomainUsageAnalysis domainAnalysis, @NonNull ContainmentAnalysis containmentAnalysis) { + public DatumCaches(@NonNull RootDomainUsageAnalysis domainAnalysis) { this.domainUsageAnalysis = domainAnalysis; - this.containmentAnalysis = containmentAnalysis; + this.containmentAnalysis = new ContainmentAnalysis(domainAnalysis.getEnvironmentFactory()); this.completeModel = domainAnalysis.getEnvironmentFactory().getCompleteModel(); } @@ -334,6 +336,10 @@ public class DatumCaches return computeContexts(source, variable2BoundContext); } + public @NonNull ContainmentAnalysis getContainmentAnalysis() { + return containmentAnalysis; + } + private org.eclipse.ocl.pivot.@Nullable Class getElementClass(@NonNull TypedElement tElement) { Type type = tElement.getType(); if (type instanceof CollectionType) { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DependencyAnalyzer.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DependencyAnalyzer.java index 482e382a5..696af2f95 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DependencyAnalyzer.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DependencyAnalyzer.java @@ -66,11 +66,11 @@ import org.eclipse.ocl.pivot.util.Visitable; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.EnvironmentFactory; import org.eclipse.ocl.pivot.utilities.MetamodelManager; +import org.eclipse.ocl.pivot.utilities.NameUtil.ToStringComparator; import org.eclipse.ocl.pivot.utilities.ParserException; import org.eclipse.ocl.pivot.utilities.PivotUtil; import org.eclipse.ocl.pivot.utilities.TracingOption; import org.eclipse.qvtd.compiler.CompilerConstants; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.AssignmentSorter.ToStringComparator; import org.eclipse.qvtd.pivot.qvtbase.Function; import org.eclipse.qvtd.pivot.qvtbase.Transformation; import org.eclipse.qvtd.pivot.qvtbase.utilities.QVTbaseUtil; 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 c44872e8b..1184f80cd 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 @@ -55,6 +55,7 @@ import org.eclipse.ocl.pivot.util.Visitable; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.EnvironmentFactory; import org.eclipse.ocl.pivot.utilities.PivotUtil; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.pivot.qvtbase.Predicate; import org.eclipse.qvtd.pivot.qvtbase.Transformation; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Node.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Node.java index 0b36cee5f..156530fa0 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Node.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Node.java @@ -19,6 +19,7 @@ import org.eclipse.ocl.pivot.CompleteClass; import org.eclipse.ocl.pivot.Property; import org.eclipse.ocl.pivot.TypedElement; import org.eclipse.ocl.pivot.utilities.Nameable; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.pivot.qvtbase.graphs.GraphStringBuilder; /** diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/NodeConnection.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/NodeConnection.java index ab93fa0c9..6ae3c14d5 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/NodeConnection.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/NodeConnection.java @@ -17,6 +17,7 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.ocl.pivot.Type; import org.eclipse.ocl.pivot.ids.IdResolver; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; /** * A NodeConnection supports a data connection from one or more source nodes to one or more target nodes. diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/OperationRegion.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/OperationRegion.java index bd5df14d5..bcd3577ef 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/OperationRegion.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/OperationRegion.java @@ -33,6 +33,7 @@ import org.eclipse.ocl.pivot.VoidType; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.DependencyAnalyzer.DependencyPaths; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.DependencyAnalyzer.DependencyStep; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameBuilder; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; import org.eclipse.qvtd.pivot.qvtbase.graphs.DOTStringBuilder; @@ -87,7 +88,7 @@ public class OperationRegion extends AbstractRegion Iterable<@NonNull List<@NonNull DependencyStep>> hiddenPaths = paths.getHiddenPaths(); Iterable<@NonNull List<@NonNull DependencyStep>> returnPaths = paths.getReturnPaths(); RootDomainUsageAnalysis domainAnalysis = schedulerConstants.getDomainAnalysis(); - Map<@NonNull ClassDatumAnalysis, @NonNull Node> classDatumAnalysis2node = new HashMap<>(); + Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Node> classDatumAnalysis2node = new HashMap<>(); for (List<@NonNull DependencyStep> steps : Iterables.concat(returnPaths, hiddenPaths)) { if (steps.size() > 0) { boolean isDirty = false; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/QVTp2QVTs.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/QVTp2QVTs.java index 53704461d..3a79bae06 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/QVTp2QVTs.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/QVTp2QVTs.java @@ -35,6 +35,7 @@ import org.eclipse.ocl.pivot.utilities.TracingOption; import org.eclipse.qvtd.compiler.CompilerConstants; import org.eclipse.qvtd.compiler.CompilerProblem; import org.eclipse.qvtd.compiler.ProblemHandler; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvts2qvts.Region2Depth; import org.eclipse.qvtd.pivot.qvtbase.Transformation; import org.eclipse.qvtd.pivot.qvtcore.Mapping; @@ -272,7 +273,7 @@ public class QVTp2QVTs extends SchedulerConstants // // All classes reachable from the primary head. // - Set<@NonNull ClassDatumAnalysis> toOneReachableClasses = new HashSet<>(); + Set<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis> toOneReachableClasses = new HashSet<>(); List<@NonNull MappingRegion> secondaryRegions = null; List<@NonNull MappingRegion> allConsumingRegionsList = new ArrayList<>(allConsumingRegions); // CME-proof iterable List shadowing a mutating Set for (int i = 0; i < allConsumingRegionsList.size(); i++) { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Region.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Region.java index af9441d2d..3e4a36158 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Region.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Region.java @@ -20,6 +20,7 @@ import org.eclipse.ocl.pivot.Property; import org.eclipse.ocl.pivot.TypedElement; import org.eclipse.ocl.pivot.VariableDeclaration; import org.eclipse.ocl.pivot.utilities.Nameable; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvts2qvts.Region2Depth; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; import org.eclipse.qvtd.pivot.qvtbase.graphs.GraphStringBuilder; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RegionUtil.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RegionUtil.java index cd109163a..b652e1eb8 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RegionUtil.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RegionUtil.java @@ -29,6 +29,7 @@ import org.eclipse.ocl.pivot.Variable; import org.eclipse.ocl.pivot.VariableDeclaration; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.PivotUtil; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl.CastEdgeImpl; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl.ComposedNodeImpl; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl.DependencyNodeImpl; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RootCompositionRegion.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RootCompositionRegion.java index 6408c28c2..a1b09d9c4 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RootCompositionRegion.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RootCompositionRegion.java @@ -19,6 +19,7 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.ocl.pivot.CollectionType; import org.eclipse.ocl.pivot.CompleteEnvironment; import org.eclipse.ocl.pivot.Property; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvts2qvts.Region2Depth; import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameBuilder; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; @@ -36,13 +37,13 @@ public class RootCompositionRegion extends AbstractRegion * The introducer node for each consumed ClassDatumAnalysis and for each known container property where the containing property is known. * The null containing property is used for introducer nodes required to be at the root. */ - private final @NonNull Map<@NonNull ClassDatumAnalysis, @NonNull Map<@Nullable Property, @NonNull Node>> classDatumAnalysis2property2node = new HashMap<>(); + private final @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Map<@Nullable Property, @NonNull Node>> classDatumAnalysis2property2node = new HashMap<>(); /** * The introducer node for each consumed ClassDatumAnalysis and for each known containing type where the containing property is just oclContainer. * The null type is used when no containing property or type is known. */ - private final @NonNull Map<@NonNull ClassDatumAnalysis, @NonNull Map<@Nullable ClassDatumAnalysis, @NonNull Node>> classDatumAnalysis2type2node = new HashMap<>(); + private final @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Node>> classDatumAnalysis2type2node = new HashMap<>(); protected RootCompositionRegion(@NonNull MultiRegion multiRegion) { super(multiRegion); @@ -93,7 +94,7 @@ public class RootCompositionRegion extends AbstractRegion // Node introducedNode; if (parent2childProperty == null) { // No known containment, owned by null type - Map<@Nullable ClassDatumAnalysis, @NonNull Node> type2node = classDatumAnalysis2type2node.get(consumedClassDatumAnalysis); + Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Node> type2node = classDatumAnalysis2type2node.get(consumedClassDatumAnalysis); if (type2node == null) { type2node = new HashMap<>(); classDatumAnalysis2type2node.put(consumedClassDatumAnalysis, type2node); @@ -118,7 +119,7 @@ public class RootCompositionRegion extends AbstractRegion } } else if (containingClassDatumAnalysis != null) { // Non-root oclContainer ownership - Map<@Nullable ClassDatumAnalysis, @NonNull Node> type2node = classDatumAnalysis2type2node.get(consumedClassDatumAnalysis); + Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Node> type2node = classDatumAnalysis2type2node.get(consumedClassDatumAnalysis); if (type2node == null) { type2node = new HashMap<>(); classDatumAnalysis2type2node.put(consumedClassDatumAnalysis, type2node); diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RootScheduledRegion.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RootScheduledRegion.java index 4bc6f87c4..a100ef4b6 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RootScheduledRegion.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/RootScheduledRegion.java @@ -35,6 +35,7 @@ import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.ocl.pivot.utilities.PivotConstants; import org.eclipse.ocl.pivot.utilities.PivotUtil; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvts2qvts.Region2Depth; import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameBuilder; import org.eclipse.qvtd.pivot.qvtbase.graphs.GraphStringBuilder; @@ -90,13 +91,13 @@ public class RootScheduledRegion extends AbstractScheduledRegion *-- relationship is included in every entry since it must be considered as an introducer for every possible *-- consumption. */ - private final @NonNull Map<@NonNull ClassDatumAnalysis, @NonNull Set<@NonNull Property>> containedClassDatumAnalysis2compositeProperties = new HashMap<@NonNull ClassDatumAnalysis, @NonNull Set<@NonNull Property>>(); + private final @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Set<@NonNull Property>> containedClassDatumAnalysis2compositeProperties = new HashMap<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull Set<@NonNull Property>>(); /** * The input model classes that may be used as independent inputs by mappings and the nodes at which they are consumed. * In the worst case a flat schedule just permutes allInstances() to provide all mapping inputs. */ - private final @NonNull Map<@NonNull ClassDatumAnalysis, @NonNull List<@NonNull Node>> consumedClassDatumAnalysis2headNodes = new HashMap<@NonNull ClassDatumAnalysis, @NonNull List<@NonNull Node>>(); + private final @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull List<@NonNull Node>> consumedClassDatumAnalysis2headNodes = new HashMap<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull List<@NonNull Node>>(); /** * Mapping from each composite property to the classes consumed by mappings and transitive compositions. @@ -105,17 +106,17 @@ public class RootScheduledRegion extends AbstractScheduledRegion * For simple cases each composition introduces instances of just a single class corresponding to its composed type. * In more complex cases a composition may also introduce instances of superclasses of its composed type. */ - private final @NonNull Map<@NonNull Property, @NonNull Set<@NonNull ClassDatumAnalysis>> consumedCompositeProperty2introducedClassDatumAnalyses = new HashMap<@NonNull Property, @NonNull Set<@NonNull ClassDatumAnalysis>>(); + private final @NonNull Map<@NonNull Property, @NonNull Set<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis>> consumedCompositeProperty2introducedClassDatumAnalyses = new HashMap<@NonNull Property, @NonNull Set<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis>>(); /** * The per-class join nodes that identify all introducers. */ - private final @NonNull Map<@NonNull ClassDatumAnalysis, @NonNull List<@NonNull Node>> introducedClassDatumAnalysis2nodes = new HashMap<@NonNull ClassDatumAnalysis, @NonNull List<@NonNull Node>>(); + private final @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull List<@NonNull Node>> introducedClassDatumAnalysis2nodes = new HashMap<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull List<@NonNull Node>>(); /** * The Realized Nodes that produce each ClassDatum. */ - private final @NonNull Map<@NonNull ClassDatumAnalysis, @NonNull List<@NonNull Node>> producedClassDatumAnalysis2realizedNodes = new HashMap<@NonNull ClassDatumAnalysis, @NonNull List<@NonNull Node>>(); + private final @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull List<@NonNull Node>> producedClassDatumAnalysis2realizedNodes = new HashMap<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull List<@NonNull Node>>(); /** * The Realized Edges that produce each PropertyDatum (or its opposite). @@ -456,17 +457,17 @@ public class RootScheduledRegion extends AbstractScheduledRegion // Find the composite properties for each consumed class and its super classes, and accumulate // the container classes of all used properties as additional consumed classes. // - Set<@NonNull ClassDatumAnalysis> allConsumedClassDatumAnalyses = new HashSet<@NonNull ClassDatumAnalysis>(consumedClassDatumAnalysis2headNodes.keySet()); - List<@NonNull ClassDatumAnalysis> allConsumedClassDatumAnalysesList = new ArrayList<@NonNull ClassDatumAnalysis>(allConsumedClassDatumAnalyses); + Set<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis> allConsumedClassDatumAnalyses = new HashSet<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis>(consumedClassDatumAnalysis2headNodes.keySet()); + List<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis> allConsumedClassDatumAnalysesList = new ArrayList<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis>(allConsumedClassDatumAnalyses); for (int i = 0; i < allConsumedClassDatumAnalysesList.size(); i++) { ClassDatumAnalysis consumedClassDatumAnalysis = allConsumedClassDatumAnalysesList.get(i); for (@NonNull ClassDatumAnalysis consumedSuperClassDatumAnalysis : consumedClassDatumAnalysis.getSuperClassDatumAnalyses()) { Set<@NonNull Property> consumedCompositeProperties = containedClassDatumAnalysis2compositeProperties.get(consumedSuperClassDatumAnalysis); if (consumedCompositeProperties != null) { for (@NonNull Property consumedCompositeProperty : consumedCompositeProperties) { - Set<@NonNull ClassDatumAnalysis> introducedClassDatumAnalyses = consumedCompositeProperty2introducedClassDatumAnalyses.get(consumedCompositeProperty); + Set<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis> introducedClassDatumAnalyses = consumedCompositeProperty2introducedClassDatumAnalyses.get(consumedCompositeProperty); if (introducedClassDatumAnalyses == null) { - introducedClassDatumAnalyses = new HashSet<@NonNull ClassDatumAnalysis>(); + introducedClassDatumAnalyses = new HashSet<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis>(); consumedCompositeProperty2introducedClassDatumAnalyses.put(consumedCompositeProperty, introducedClassDatumAnalyses); } introducedClassDatumAnalyses.add(consumedClassDatumAnalysis); diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ScheduledRegion.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ScheduledRegion.java index 5975dd67a..4e2208021 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ScheduledRegion.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ScheduledRegion.java @@ -18,6 +18,7 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.ocl.pivot.CompleteClass; import org.eclipse.ocl.pivot.Property; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public interface ScheduledRegion extends Region { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/SchedulerConstants.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/SchedulerConstants.java index d4754c5a8..13ea0735a 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/SchedulerConstants.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/SchedulerConstants.java @@ -40,6 +40,8 @@ import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.ocl.pivot.utilities.PivotUtil; import org.eclipse.ocl.pivot.utilities.StringUtil; import org.eclipse.ocl.pivot.values.Unlimited; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ContainmentAnalysis; import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameBuilder; import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameReservation; import org.eclipse.qvtd.pivot.qvtbase.Rule; @@ -86,7 +88,6 @@ public abstract class SchedulerConstants private final @NonNull EnvironmentFactory environmentFactory; private final @NonNull Transformation transformation; - private final @NonNull ContainmentAnalysis containmentAnalysis; private final @NonNull RootDomainUsageAnalysis domainAnalysis; private final @NonNull DatumCaches datumCaches; @@ -135,10 +136,9 @@ public abstract class SchedulerConstants protected SchedulerConstants(@NonNull EnvironmentFactory environmentFactory, @NonNull Transformation asTransformation) { this.environmentFactory = environmentFactory; this.transformation = asTransformation; - this.containmentAnalysis = new ContainmentAnalysis(environmentFactory); this.domainAnalysis = new QVTcoreDomainUsageAnalysis(environmentFactory); domainAnalysis.analyzeTransformation(asTransformation); - this.datumCaches = new DatumCaches(domainAnalysis, containmentAnalysis); + this.datumCaches = new DatumCaches(domainAnalysis); datumCaches.analyzeTransformation(asTransformation); // this.inputUsage = domainAnalysis.getInputUsage(); @@ -262,7 +262,7 @@ public abstract class SchedulerConstants } public @NonNull ContainmentAnalysis getContainmentAnalysis() { - return containmentAnalysis; + return datumCaches.getContainmentAnalysis(); } // @SuppressWarnings("null") diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ClassDatumAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/analysis/ClassDatumAnalysis.java index 2175285bc..ceaa05826 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ClassDatumAnalysis.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/analysis/ClassDatumAnalysis.java @@ -8,7 +8,7 @@ * Contributors: * E.D.Willink - Initial API and implementation *******************************************************************************/ -package org.eclipse.qvtd.compiler.internal.qvtp2qvts; +package org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis; import java.util.ArrayList; import java.util.Collections; @@ -28,6 +28,10 @@ import org.eclipse.ocl.pivot.Type; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.EnvironmentFactory; import org.eclipse.ocl.pivot.utilities.FeatureFilter; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.MappingRegion; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.SchedulerConstants; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; import org.eclipse.qvtd.pivot.qvtcore.Mapping; import org.eclipse.qvtd.pivot.qvtcore.analysis.DomainUsage; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ContainmentAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/analysis/ContainmentAnalysis.java index e1b9c728f..979ed2d4d 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ContainmentAnalysis.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/analysis/ContainmentAnalysis.java @@ -9,7 +9,7 @@ * Adolfo Sanchez-Barbudo Herrera - initial API and implementation * E.D.Willink - use Complete model *******************************************************************************/ -package org.eclipse.qvtd.compiler.internal.qvtp2qvts; +package org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis; import java.util.ArrayList; import java.util.Collections; @@ -27,7 +27,13 @@ import org.eclipse.ocl.pivot.utilities.EnvironmentFactory; import org.eclipse.ocl.pivot.utilities.FeatureFilter; /** - * ContainmentAnalysis provides an analysis of all containment relationships in the EnvironmentFactory's resources. + * ContainmentAnalysis provides an analysis of all declared containment relationships in the EnvironmentFactory's resources. It therefore supports the compile time question: + * + * What declared container types could contain this declared contained type? + * + * The declared contained type could actually be any of its subclasses, so the containment properties must consider them all. + * The actual container types could be the sub-class of each possible containment property. + * The declared container types could be the super-classes too. */ public class ContainmentAnalysis { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/InheritanceAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/analysis/InheritanceAnalysis.java index be864bfef..1b01a7663 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/InheritanceAnalysis.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/analysis/InheritanceAnalysis.java @@ -9,7 +9,7 @@ * Adolfo Sanchez-Barbudo Herrera - initial API and implementation * E.D.Willink - use Complete model *******************************************************************************/ -package org.eclipse.qvtd.compiler.internal.qvtp2qvts; +package org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis; import java.util.HashMap; import java.util.HashSet; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/ComposedNodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/ComposedNodeImpl.java index 08538fbac..e93419b0c 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/ComposedNodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/ComposedNodeImpl.java @@ -11,10 +11,10 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public class ComposedNodeImpl extends NodeImpl { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/DependencyNodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/DependencyNodeImpl.java index 384d90444..4bad8291b 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/DependencyNodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/DependencyNodeImpl.java @@ -11,10 +11,10 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public class DependencyNodeImpl extends NodeImpl { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/ErrorNodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/ErrorNodeImpl.java index e0ef9d9b1..ef1a714a5 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/ErrorNodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/ErrorNodeImpl.java @@ -11,11 +11,11 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Role; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public class ErrorNodeImpl extends NodeImpl { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/InputNodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/InputNodeImpl.java index 1f33e72a9..f3b2006dd 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/InputNodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/InputNodeImpl.java @@ -11,10 +11,10 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public class InputNodeImpl extends NodeImpl { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/NodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/NodeImpl.java index c04f99d88..a8bda5f13 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/NodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/NodeImpl.java @@ -26,7 +26,6 @@ import org.eclipse.ocl.pivot.internal.prettyprint.PrettyPrinter; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.AbstractRegion; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Connection; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Edge; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NavigableEdge; @@ -39,6 +38,7 @@ import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Role; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.RootScheduledRegion; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.SchedulerConstants; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Visitor; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; import org.eclipse.qvtd.pivot.qvtbase.graphs.GraphStringBuilder; import org.eclipse.qvtd.pivot.qvtcore.analysis.DomainUsage; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/NullNodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/NullNodeImpl.java index ee23aa712..76f49a1a0 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/NullNodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/NullNodeImpl.java @@ -11,10 +11,10 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public class NullNodeImpl extends NodeImpl { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/OperationNodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/OperationNodeImpl.java index d5e1d1b44..52e9bf956 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/OperationNodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/OperationNodeImpl.java @@ -11,10 +11,10 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public class OperationNodeImpl extends NodeImpl { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/PatternTypedNodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/PatternTypedNodeImpl.java index 65ae2f667..574a867c9 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/PatternTypedNodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/PatternTypedNodeImpl.java @@ -11,10 +11,10 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public class PatternTypedNodeImpl extends NodeImpl { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/TrueNodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/TrueNodeImpl.java index 77b1f65d4..e282501bf 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/TrueNodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/TrueNodeImpl.java @@ -11,10 +11,10 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public class TrueNodeImpl extends NodeImpl { diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/UnknownNodeImpl.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/UnknownNodeImpl.java index 50fa58f11..537785588 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/UnknownNodeImpl.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/impl/UnknownNodeImpl.java @@ -11,11 +11,11 @@ package org.eclipse.qvtd.compiler.internal.qvtp2qvts.impl; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Role; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; public class UnknownNodeImpl extends NodeImpl { 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 771d1d31d..9ffbbf851 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 @@ -63,7 +63,6 @@ import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.ocl.pivot.utilities.PivotUtil; import org.eclipse.ocl.pivot.utilities.TreeIterable; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Edge; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.EdgeRole; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NavigableEdge; @@ -71,6 +70,7 @@ import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeConnection; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.SchedulerConstants; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.pivot.qvtbase.Function; import org.eclipse.qvtd.pivot.qvtbase.Transformation; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/CyclicScheduledRegion2Mapping.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/CyclicScheduledRegion2Mapping.java index bfe3c8c0a..480ef7aba 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/CyclicScheduledRegion2Mapping.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/CyclicScheduledRegion2Mapping.java @@ -30,11 +30,11 @@ import org.eclipse.ocl.pivot.ids.OperationId; import org.eclipse.ocl.pivot.ids.ParametersId; import org.eclipse.ocl.pivot.ids.TypeId; import org.eclipse.ocl.pivot.utilities.PivotUtil; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.CyclicScheduledRegion; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeConnection; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.pivot.qvtimperative.AddStatement; import org.eclipse.qvtd.pivot.qvtimperative.AppendParameter; import org.eclipse.qvtd.pivot.qvtimperative.BufferStatement; @@ -177,7 +177,7 @@ public class CyclicScheduledRegion2Mapping extends AbstractScheduledRegion2Mappi /** * The recursions. */ - private final @NonNull Map<@NonNull ClassDatumAnalysis, @NonNull RecursionContext> classDatumAnalysis2recursion = new HashMap<@NonNull ClassDatumAnalysis, @NonNull RecursionContext>(); + private final @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull RecursionContext> classDatumAnalysis2recursion = new HashMap<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull RecursionContext>(); /** * True if all recursions use Set accumulators allowing the unqiueness to be determined by excliusion rather than diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/RootRegion2Mapping.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/RootRegion2Mapping.java index bd30279a4..08edbf696 100644 --- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/RootRegion2Mapping.java +++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/RootRegion2Mapping.java @@ -37,7 +37,6 @@ import org.eclipse.ocl.pivot.ids.IdResolver; import org.eclipse.ocl.pivot.internal.complete.StandardLibraryInternal; import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.ocl.pivot.utilities.PivotUtil; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ClassDatumAnalysis; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Edge; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NavigableEdge; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Node; @@ -45,6 +44,7 @@ import org.eclipse.qvtd.compiler.internal.qvtp2qvts.NodeConnection; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.Region; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.RootCompositionRegion; import org.eclipse.qvtd.compiler.internal.qvtp2qvts.SchedulerConstants; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis; import org.eclipse.qvtd.pivot.qvtbase.TypedModel; import org.eclipse.qvtd.pivot.qvtbase.utilities.QVTbaseUtil; import org.eclipse.qvtd.pivot.qvtimperative.BufferStatement; @@ -59,7 +59,7 @@ public class RootRegion2Mapping extends AbstractScheduledRegion2Mapping /** * Mapping from the type to allInstances variable. */ - private final @NonNull Map<@NonNull ClassDatumAnalysis, @NonNull DeclareStatement> classDatumAnalysis2variable = new HashMap<>(); + private final @NonNull Map<org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ClassDatumAnalysis, @NonNull DeclareStatement> classDatumAnalysis2variable = new HashMap<>(); /** * Mapping from the scheduled Nodes to their QVTi variables. diff --git a/tests/org.eclipse.qvtd.compiler.tests/src/org/eclipse/qvtd/compiler/tests/AnalysisTests.java b/tests/org.eclipse.qvtd.compiler.tests/src/org/eclipse/qvtd/compiler/tests/AnalysisTests.java index 91bf22bf2..1dafa1979 100644 --- a/tests/org.eclipse.qvtd.compiler.tests/src/org/eclipse/qvtd/compiler/tests/AnalysisTests.java +++ b/tests/org.eclipse.qvtd.compiler.tests/src/org/eclipse/qvtd/compiler/tests/AnalysisTests.java @@ -25,8 +25,8 @@ import org.eclipse.ocl.pivot.internal.utilities.OCLInternal; import org.eclipse.ocl.pivot.model.OCLstdlib; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.ParserException; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.ContainmentAnalysis; -import org.eclipse.qvtd.compiler.internal.qvtp2qvts.InheritanceAnalysis; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.ContainmentAnalysis; +import org.eclipse.qvtd.compiler.internal.qvtp2qvts.analysis.InheritanceAnalysis; import org.eclipse.qvtd.xtext.qvtbase.tests.XtextTestCase; import org.junit.Test; |