Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2018-01-26 10:42:44 +0000
committerEd Willink2018-04-12 10:37:38 +0000
commitfb5de8cbacf1e09612f5ba95b16d2c148a904022 (patch)
tree702e73f835cd61f5f28515d2524c412a1f7c422d
parent85702f109c9223e60ffc6a300fe7c93fadbfb843 (diff)
downloadorg.eclipse.qvtd-fb5de8cbacf1e09612f5ba95b16d2c148a904022.tar.gz
org.eclipse.qvtd-fb5de8cbacf1e09612f5ba95b16d2c148a904022.tar.xz
org.eclipse.qvtd-fb5de8cbacf1e09612f5ba95b16d2c148a904022.zip
[529130] Distinct analyzeRules/analyzeTransformations
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/AbstractCompilerChain.java1
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/AbstractScheduleManager.java15
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/QVTm2QVTs.java2
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/ScheduleManager.java13
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/TransformationAnalysis.java7
5 files changed, 34 insertions, 4 deletions
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/AbstractCompilerChain.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/AbstractCompilerChain.java
index 6981f5596..01b3ebf13 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/AbstractCompilerChain.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/AbstractCompilerChain.java
@@ -243,7 +243,6 @@ public abstract class AbstractCompilerChain extends CompilerUtil implements Comp
ScheduleManager scheduleManager = qvtm2qvts.getScheduleManager();
sResource.getContents().add(scheduleManager.getScheduleModel());
scheduleManager.addTransformation(asTransformation);
- scheduleManager.analyzeTransformations();
List<@NonNull MappingRegion> activeRegions = qvtm2qvts.transform();
throwCompilerChainExceptionForErrors();
String rootName = ClassUtil.nonNullState(pResource.getURI().trimFileExtension().trimFileExtension().lastSegment());
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/AbstractScheduleManager.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/AbstractScheduleManager.java
index 002645030..868474a35 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/AbstractScheduleManager.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/AbstractScheduleManager.java
@@ -219,13 +219,24 @@ public abstract class AbstractScheduleManager implements ScheduleManager
}
}
- protected void analyzeTransformation(@NonNull TransformationAnalysis transformationAnalysis) {
+ protected void analyzeRules(@NonNull TransformationAnalysis transformationAnalysis) {
domainUsageAnalysis.analyzeTransformation(transformationAnalysis.getTransformation());
- transformationAnalysis.analyze();
+ transformationAnalysis.analyzeRules();
+ }
+
+ protected void analyzeTransformation(@NonNull TransformationAnalysis transformationAnalysis) {
+ transformationAnalysis.analyzeTransformation();
datumCaches.analyzeTransformation(transformationAnalysis);
}
@Override
+ public void analyzeRules() {
+ for (@NonNull TransformationAnalysis transformationAnalysis : transformation2transformationAnalysis.values()) {
+ analyzeRules(transformationAnalysis);
+ }
+ }
+
+ @Override
public void analyzeTransformations() {
for (@NonNull TransformationAnalysis transformationAnalysis : transformation2transformationAnalysis.values()) {
analyzeTransformation(transformationAnalysis);
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/QVTm2QVTs.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/QVTm2QVTs.java
index f297e11d9..bb8ec86e5 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/QVTm2QVTs.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/QVTm2QVTs.java
@@ -36,6 +36,8 @@ public class QVTm2QVTs extends AbstractQVTb2QVTs
}
public @NonNull List<@NonNull MappingRegion> transform() throws IOException {
+ scheduleManager.analyzeRules();
+ scheduleManager.analyzeTransformations();
List<@NonNull RuleRegion> orderedRuleRegions = new ArrayList<>();
for (@NonNull MappingRegion mappingRegion : QVTscheduleUtil.getOwnedMappingRegions(scheduleManager.getScheduleModel())) {
orderedRuleRegions.add((RuleRegion) mappingRegion);
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/ScheduleManager.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/ScheduleManager.java
index d439275c0..35ef49d81 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/ScheduleManager.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/ScheduleManager.java
@@ -42,8 +42,21 @@ public interface ScheduleManager
void addMappingRegion(@NonNull MappingRegion mappingRegion);
void addRegionError(@NonNull Region region, @NonNull String messageTemplate, Object... bindings);
void addRegionWarning(@NonNull Region region, @NonNull String messageTemplate, Object... bindings);
+
+ /**
+ * Define an additional/only Transformation to be scheduled by the subsequent anayses and syntheses.
+ */
@NonNull TransformationAnalysis addTransformation(@NonNull Transformation asTransformation);
@NonNull OperationRegion analyzeOperation(@NonNull OperationCallExp operationCallExp);
+
+ /**
+ * Perform the independent local analysis of each Rule.
+ */
+ void analyzeRules();
+
+ /**
+ * Perform the interdependent global analysis of each Rule within its Transformation.
+ */
void analyzeTransformations();
@Nullable Property basicGetStatusProperty(@NonNull Node node);
@NonNull ExpressionAnalyzer createExpressionAnalyzer(@NonNull RuleAnalysis ruleAnalysis);
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/TransformationAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/TransformationAnalysis.java
index 2d1d78f99..53304c298 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/TransformationAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtm2qvts/TransformationAnalysis.java
@@ -64,7 +64,7 @@ public class TransformationAnalysis extends QVTbaseHelper implements Nameable
}
}
- public void analyze() {
+ public void analyzeRules() {
// for (@NonNull RuleAnalysis ruleAnalysis : rule2ruleAnalysis.values()) { // FIXME testOCL2QVTi_Source2Target_Interpreted fails on 'random' order
for (@NonNull Rule asRule : QVTbaseUtil.getOwnedRules(transformation)) {
RuleAnalysis ruleAnalysis = getRuleAnalysis(asRule);
@@ -72,6 +72,11 @@ public class TransformationAnalysis extends QVTbaseHelper implements Nameable
}
}
+ public void analyzeTransformation() {
+ // TODO Auto-generated method stub
+
+ }
+
// protected void analyzeKey(@NonNull Key key) {
// CompleteClass identifies = getCompleteClass(QVTrelationUtil.getIdentifies(key));
// completeClass2key.put(identifies, key);

Back to the top