diff options
author | Ed Willink | 2018-01-26 10:42:44 +0000 |
---|---|---|
committer | Ed Willink | 2018-04-12 10:37:38 +0000 |
commit | fb5de8cbacf1e09612f5ba95b16d2c148a904022 (patch) | |
tree | 702e73f835cd61f5f28515d2524c412a1f7c422d | |
parent | 85702f109c9223e60ffc6a300fe7c93fadbfb843 (diff) | |
download | org.eclipse.qvtd-fb5de8cbacf1e09612f5ba95b16d2c148a904022.tar.gz org.eclipse.qvtd-fb5de8cbacf1e09612f5ba95b16d2c148a904022.tar.xz org.eclipse.qvtd-fb5de8cbacf1e09612f5ba95b16d2c148a904022.zip |
[529130] Distinct analyzeRules/analyzeTransformations
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); |