diff options
author | Ed Willink | 2016-09-16 08:42:29 +0000 |
---|---|---|
committer | Ed Willink | 2016-09-19 11:31:57 +0000 |
commit | e8065247fd3f2c5dfb103a401ecd973b07b0b3ca (patch) | |
tree | 0b120c34161256d3fc2002c3ba82868bf5310d3a | |
parent | e1e3d0530b25bbf803ae91b998fee02b04fd0098 (diff) | |
download | org.eclipse.qvtd-ewillink/480194.tar.gz org.eclipse.qvtd-ewillink/480194.tar.xz org.eclipse.qvtd-ewillink/480194.zip |
wip see Bugzillaewillink/480194
10 files changed, 109 insertions, 50 deletions
diff --git a/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/analyzer/QVTiAS2CGVisitor.java b/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/analyzer/QVTiAS2CGVisitor.java index a5af26990..1c8043bd6 100644 --- a/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/analyzer/QVTiAS2CGVisitor.java +++ b/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/analyzer/QVTiAS2CGVisitor.java @@ -621,34 +621,23 @@ public class QVTiAS2CGVisitor extends AS2CGVisitor implements QVTimperativeVisit @Override public CGNamedElement visitDeclareStatement(@NonNull DeclareStatement asVariable) { - if (!asVariable.isIsChecked()) { + OCLExpression asInit = asVariable.getOwnedInit(); + if (asInit == null) { + + } + else if (!asVariable.isIsChecked()) { /* CGVariable cgVariable = getVariable(asVariable); CGValuedElement initValue = doVisit(CGValuedElement.class, asVariable.getOwnedInit()); cgVariable.setInit(initValue); cgVariable.setTypeId(initValue.getTypeId()); cgVariable.setRequired(initValue.isRequired()); return cgVariable; */ - OCLExpression asInit = asVariable.getOwnedInit(); if (asInit != null) { getBodyBuilder().appendCheckedLetVariable(asVariable, asInit); } } else { - // CGVariable cgVariable = getVariable(asVariable); - // CGValuedElement initValue = doVisit(CGValuedElement.class, asVariable.getOwnedInit()); - // cgVariable.setInit(initValue); - // cgVariable.setTypeId(initValue.getTypeId()); - // cgVariable.setRequired(initValue.isRequired()); - // FIXME predicate - // return cgVariable; - // } - // - // @Override - // public @Nullable CGNamedElement visitVariablePredicate(@NonNull VariablePredicate asPredicate) { - OCLExpression asExpression = asVariable.getOwnedInit(); - assert asExpression != null; - // - CGValuedElement cgExpression = doVisit(CGValuedElement.class, asExpression); + CGValuedElement cgExpression = doVisit(CGValuedElement.class, asInit); cgExpression.setName("temp1_" + asVariable.getName()); // CGFinalVariable cgUncastVariable = CGModelFactory.eINSTANCE.createCGFinalVariable(); @@ -666,7 +655,7 @@ public class QVTiAS2CGVisitor extends AS2CGVisitor implements QVTimperativeVisit CGIfExp cgPredicate = CGModelFactory.eINSTANCE.createCGIfExp(); cgPredicate.setTypeId(analyzer.getTypeId(TypeId.BOOLEAN)); cgPredicate.setRequired(true); - CGConstantExp cgElse = analyzer.createCGConstantExp(asExpression, analyzer.getBoolean(false)); + CGConstantExp cgElse = analyzer.createCGConstantExp(asInit, analyzer.getBoolean(false)); setAst(cgElse, asVariable); cgElse.setTypeId(analyzer.getTypeId(TypeId.BOOLEAN)); cgElse.setRequired(true); diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/analysis/AbstractDomainUsageAnalysis.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/analysis/AbstractDomainUsageAnalysis.java index 6588e6da7..7cefcff5c 100644 --- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/analysis/AbstractDomainUsageAnalysis.java +++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/analysis/AbstractDomainUsageAnalysis.java @@ -81,6 +81,7 @@ import org.eclipse.qvtd.pivot.qvtimperative.CheckStatement; import org.eclipse.qvtd.pivot.qvtimperative.ConnectionVariable; import org.eclipse.qvtd.pivot.qvtimperative.GuardVariable; import org.eclipse.qvtd.pivot.qvtimperative.ImperativeDomain; +import org.eclipse.qvtd.pivot.qvtimperative.InitializeStatement; import org.eclipse.qvtd.pivot.qvtimperative.Mapping; import org.eclipse.qvtd.pivot.qvtimperative.NewStatement; import org.eclipse.qvtd.pivot.qvtimperative.DeclareStatement; @@ -463,6 +464,11 @@ public abstract class AbstractDomainUsageAnalysis extends AbstractExtendingQVTim } @Override + public @NonNull DomainUsage visitGuardVariable(@NonNull GuardVariable object) { + return visit(object.getReferredTypedModel()); + } + + @Override public @NonNull DomainUsage visitIfExp(@NonNull IfExp object) { @SuppressWarnings("unused") DomainUsage conditionUsage = visit(object.getOwnedCondition()); DomainUsage thenUsage = visit(object.getOwnedThen()); @@ -471,11 +477,6 @@ public abstract class AbstractDomainUsageAnalysis extends AbstractExtendingQVTim } @Override - public @NonNull DomainUsage visitGuardVariable(@NonNull GuardVariable object) { - return visit(object.getReferredTypedModel()); - } - - @Override public @NonNull DomainUsage visitImperativeDomain(@NonNull ImperativeDomain object) { DomainUsage usage = visit(object.getTypedModel()); setUsage(object, usage); @@ -483,6 +484,11 @@ public abstract class AbstractDomainUsageAnalysis extends AbstractExtendingQVTim } @Override + public @NonNull DomainUsage visitInitializeStatement(@NonNull InitializeStatement object) { + return visit(object.getTargetVariable()); + } + + @Override public @NonNull DomainUsage visitIterateExp(@NonNull IterateExp object) { DomainUsage sourceUsage = visit(object.getOwnedSource()); for (Variable iterator : object.getOwnedIterators()) { diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/attributes/IfStatementAttribution.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/attributes/IfStatementAttribution.java new file mode 100644 index 000000000..e0668adb5 --- /dev/null +++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/attributes/IfStatementAttribution.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2014 Willink Transformations and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * E.D.Willink - initial API and implementation + *******************************************************************************/ +package org.eclipse.qvtd.pivot.qvtimperative.attributes; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.ocl.pivot.internal.scoping.AbstractAttribution; +import org.eclipse.ocl.pivot.internal.scoping.EnvironmentView; +import org.eclipse.ocl.pivot.internal.scoping.ScopeView; +import org.eclipse.qvtd.pivot.qvtimperative.IfStatement; +import org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage; +import org.eclipse.qvtd.pivot.qvtimperative.Statement; +import org.eclipse.qvtd.pivot.qvtimperative.VariableStatement; + +public class IfStatementAttribution extends AbstractAttribution +{ + public static final IfStatementAttribution INSTANCE = new IfStatementAttribution(); + + @Override + public ScopeView computeLookup(@NonNull EObject target, @NonNull EnvironmentView environmentView, @NonNull ScopeView scopeView) { + IfStatement ifStatement = (IfStatement)target; + EStructuralFeature containmentFeature = scopeView.getContainmentFeature(); + if (containmentFeature == QVTimperativePackage.Literals.IF_STATEMENT__OWNED_THEN_STATEMENTS) { + EObject child = scopeView.getChild(); + for (Statement asStatement : ifStatement.getOwnedThenStatements()) { + if (asStatement == child) { + break; + } + if (asStatement instanceof VariableStatement) { + environmentView.addNamedElement(asStatement); + } + } + } + else if (containmentFeature == QVTimperativePackage.Literals.IF_STATEMENT__OWNED_ELSE_STATEMENTS) { + EObject child = scopeView.getChild(); + for (Statement asStatement : ifStatement.getOwnedElseStatements()) { + if (asStatement == child) { + break; + } + if (asStatement instanceof VariableStatement) { + environmentView.addNamedElement(asStatement); + } + } + } + return scopeView.getParent(); + } +} diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/scoping/QVTimperativePivotScoping.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/scoping/QVTimperativePivotScoping.java index c28caf555..ad1dc042c 100644 --- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/scoping/QVTimperativePivotScoping.java +++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/scoping/QVTimperativePivotScoping.java @@ -18,6 +18,7 @@ import org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage; import org.eclipse.qvtd.pivot.qvtimperative.attributes.AccessStatementAttribution; import org.eclipse.qvtd.pivot.qvtimperative.attributes.CoreDomainAttribution; import org.eclipse.qvtd.pivot.qvtimperative.attributes.GuardVariableAttribution; +import org.eclipse.qvtd.pivot.qvtimperative.attributes.IfStatementAttribution; import org.eclipse.qvtd.pivot.qvtimperative.attributes.MappingAttribution; import org.eclipse.qvtd.pivot.qvtimperative.attributes.MappingCallBindingAttribution; import org.eclipse.qvtd.pivot.qvtimperative.attributes.MappingLoopAttribution; @@ -29,6 +30,7 @@ public class QVTimperativePivotScoping Map<EClassifier, Attribution> registry = Attribution.REGISTRY; registry.put(QVTimperativePackage.Literals.ACCESS_STATEMENT, AccessStatementAttribution.INSTANCE); registry.put(QVTimperativePackage.Literals.GUARD_VARIABLE, GuardVariableAttribution.INSTANCE); + registry.put(QVTimperativePackage.Literals.IF_STATEMENT, IfStatementAttribution.INSTANCE); registry.put(QVTimperativePackage.Literals.IMPERATIVE_DOMAIN, CoreDomainAttribution.INSTANCE); registry.put(QVTimperativePackage.Literals.MAPPING, MappingAttribution.INSTANCE); registry.put(QVTimperativePackage.Literals.MAPPING_CALL_BINDING, MappingCallBindingAttribution.INSTANCE); diff --git a/plugins/org.eclipse.qvtd.xtext.qvtcore/src/org/eclipse/qvtd/xtext/qvtcore/cs2as/QVTcoreCSPreOrderVisitor.java b/plugins/org.eclipse.qvtd.xtext.qvtcore/src/org/eclipse/qvtd/xtext/qvtcore/cs2as/QVTcoreCSPreOrderVisitor.java index a59a1f8c9..e78168958 100644 --- a/plugins/org.eclipse.qvtd.xtext.qvtcore/src/org/eclipse/qvtd/xtext/qvtcore/cs2as/QVTcoreCSPreOrderVisitor.java +++ b/plugins/org.eclipse.qvtd.xtext.qvtcore/src/org/eclipse/qvtd/xtext/qvtcore/cs2as/QVTcoreCSPreOrderVisitor.java @@ -19,7 +19,6 @@ import org.eclipse.ocl.pivot.utilities.PivotUtil; import org.eclipse.ocl.xtext.base.cs2as.BasicContinuation; import org.eclipse.ocl.xtext.base.cs2as.CS2ASConversion; import org.eclipse.ocl.xtext.base.cs2as.Continuation; -import org.eclipse.ocl.xtext.base.cs2as.PivotDependency; import org.eclipse.ocl.xtext.base.cs2as.SingleContinuation; import org.eclipse.qvtd.pivot.qvtbase.Function; import org.eclipse.qvtd.pivot.qvtbase.FunctionParameter; @@ -45,7 +44,7 @@ public class QVTcoreCSPreOrderVisitor extends AbstractQVTcoreCSPreOrderVisitor public static class ParamDeclarationCompletion extends SingleContinuation<ParamDeclarationCS> { public ParamDeclarationCompletion(@NonNull CS2ASConversion context, @NonNull ParamDeclarationCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -61,7 +60,7 @@ public class QVTcoreCSPreOrderVisitor extends AbstractQVTcoreCSPreOrderVisitor public static class QueryCompletion extends SingleContinuation<QueryCS> { public QueryCompletion(@NonNull CS2ASConversion context, @NonNull QueryCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -77,7 +76,7 @@ public class QVTcoreCSPreOrderVisitor extends AbstractQVTcoreCSPreOrderVisitor public static class RealizeableVariableCompletion extends SingleContinuation<RealizeableVariableCS> { public RealizeableVariableCompletion(@NonNull CS2ASConversion context, @NonNull RealizeableVariableCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPostOrderVisitor.java b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPostOrderVisitor.java index a6d6a0003..409d76def 100644 --- a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPostOrderVisitor.java +++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPostOrderVisitor.java @@ -160,6 +160,9 @@ public class QVTimperativeCSPostOrderVisitor extends AbstractQVTimperativeCSPost if (expression != null) { OCLExpression target = context.visitLeft2Right(OCLExpression.class, expression); asVariable.setOwnedInit(target); + if ((csElement.getOwnedType() == null) && (target != null)) { + context.setType(asVariable, target.getType(), target.isIsRequired(), target.getTypeValue()); + } } } return null; @@ -228,12 +231,15 @@ public class QVTimperativeCSPostOrderVisitor extends AbstractQVTimperativeCSPost @Override public Continuation<?> visitInitializeStatementCS(@NonNull InitializeStatementCS csElement) { - InitializeStatement asVariable = PivotUtil.getPivot(InitializeStatement.class, csElement); - if (asVariable != null) { + InitializeStatement asStatement = PivotUtil.getPivot(InitializeStatement.class, csElement); + if (asStatement != null) { + VariableDeclaration targetVariable = csElement.getTargetVariable(); + assert targetVariable != null; + asStatement.setTargetVariable(targetVariable); ExpCS expression = csElement.getOwnedInit(); if (expression != null) { OCLExpression target = context.visitLeft2Right(OCLExpression.class, expression); - asVariable.setOwnedInit(target); + asStatement.setOwnedInit(target); } } return null; diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPreOrderVisitor.java b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPreOrderVisitor.java index 8339aee53..12d6a4315 100644 --- a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPreOrderVisitor.java +++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPreOrderVisitor.java @@ -73,7 +73,7 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr public static class AccessStatementCompletion extends SingleContinuation<@NonNull AccessStatementCS> { public AccessStatementCompletion(@NonNull CS2ASConversion context, @NonNull AccessStatementCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -89,7 +89,7 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr public static class DeclareStatementCompletion extends SingleContinuation<@NonNull DeclareStatementCS> { public DeclareStatementCompletion(@NonNull CS2ASConversion context, @NonNull DeclareStatementCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -105,7 +105,7 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr public static class GuardVariableCompletion extends SingleContinuation<@NonNull GuardVariableCS> { public GuardVariableCompletion(@NonNull CS2ASConversion context, @NonNull GuardVariableCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -121,7 +121,7 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr public static class InoutVariableCompletion extends SingleContinuation<@NonNull InoutVariableCS> { public InoutVariableCompletion(@NonNull CS2ASConversion context, @NonNull InoutVariableCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -136,12 +136,12 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr public static class MappingLoopIteratorCompletion extends SingleContinuation<@NonNull MappingLoopCS> { - protected static PivotDependency[] computeDependencies(@NonNull MappingLoopCS csElement) { + protected static @NonNull PivotDependency @NonNull [] computeDependencies(@NonNull MappingLoopCS csElement) { VariableCS csIterator = csElement.getOwnedIterator(); if (csIterator != null) { TypedRefCS ownedType = csIterator.getOwnedType(); if (ownedType != null) { - return new PivotDependency[]{new PivotDependency(ownedType)}; + return new @NonNull PivotDependency[]{new PivotDependency(ownedType)}; } } return new PivotDependency[0]; @@ -171,7 +171,7 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr public static class NewStatementCompletion extends SingleContinuation<@NonNull NewStatementCS> { public NewStatementCompletion(@NonNull CS2ASConversion context, @NonNull NewStatementCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -187,7 +187,7 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr public static class OutVariableCompletion extends SingleContinuation<@NonNull OutVariableCS> { public OutVariableCompletion(@NonNull CS2ASConversion context, @NonNull OutVariableCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -203,7 +203,7 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr public static class ParamDeclarationCompletion extends SingleContinuation<@NonNull ParamDeclarationCS> { public ParamDeclarationCompletion(@NonNull CS2ASConversion context, @NonNull ParamDeclarationCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -219,7 +219,7 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr public static class QueryCompletion extends SingleContinuation<QueryCS> { public QueryCompletion(@NonNull CS2ASConversion context, @NonNull QueryCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override diff --git a/plugins/org.eclipse.qvtd.xtext.qvtrelation/src/org/eclipse/qvtd/xtext/qvtrelation/cs2as/QVTrelationCSPreOrderVisitor.java b/plugins/org.eclipse.qvtd.xtext.qvtrelation/src/org/eclipse/qvtd/xtext/qvtrelation/cs2as/QVTrelationCSPreOrderVisitor.java index ee1e28f4f..21518105c 100644 --- a/plugins/org.eclipse.qvtd.xtext.qvtrelation/src/org/eclipse/qvtd/xtext/qvtrelation/cs2as/QVTrelationCSPreOrderVisitor.java +++ b/plugins/org.eclipse.qvtd.xtext.qvtrelation/src/org/eclipse/qvtd/xtext/qvtrelation/cs2as/QVTrelationCSPreOrderVisitor.java @@ -25,7 +25,6 @@ import org.eclipse.ocl.pivot.utilities.Pivotable; import org.eclipse.ocl.xtext.base.cs2as.BasicContinuation; import org.eclipse.ocl.xtext.base.cs2as.CS2ASConversion; import org.eclipse.ocl.xtext.base.cs2as.Continuation; -import org.eclipse.ocl.xtext.base.cs2as.PivotDependency; import org.eclipse.ocl.xtext.base.cs2as.SingleContinuation; import org.eclipse.ocl.xtext.basecs.PathNameCS; import org.eclipse.ocl.xtext.basecs.TypedRefCS; @@ -47,11 +46,11 @@ import org.eclipse.qvtd.xtext.qvtrelationcs.TransformationCS; import org.eclipse.qvtd.xtext.qvtrelationcs.util.AbstractQVTrelationCSPreOrderVisitor; public class QVTrelationCSPreOrderVisitor extends AbstractQVTrelationCSPreOrderVisitor -{ +{ public static class CollectionTemplateCompletion extends SingleContinuation<CollectionTemplateCS> { public CollectionTemplateCompletion(@NonNull CS2ASConversion context, @NonNull CollectionTemplateCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -124,7 +123,7 @@ public class QVTrelationCSPreOrderVisitor extends AbstractQVTrelationCSPreOrderV public static class ObjectTemplateCompletion extends SingleContinuation<ObjectTemplateCS> { public ObjectTemplateCompletion(@NonNull CS2ASConversion context, @NonNull ObjectTemplateCS csElement) { - super(context, null, null, csElement, new PivotDependency(csElement.getOwnedType())); + super(context, null, null, csElement, createDependencies(csElement.getOwnedType())); } @Override @@ -267,7 +266,7 @@ public class QVTrelationCSPreOrderVisitor extends AbstractQVTrelationCSPreOrderV Transformation pivotElement = PivotUtil.getPivot(Transformation.class, csElement); if (pivotElement != null) { List<org.eclipse.ocl.pivot.Class> superClasses = pivotElement.getSuperClasses(); -// context.refreshList(Type.class, superClasses, csElement.getOwnedSuperType()); + // context.refreshList(Type.class, superClasses, csElement.getOwnedSuperType()); if (superClasses.isEmpty()) { org.eclipse.ocl.pivot.Class oclElementType = context.getMetamodelManager().getStandardLibrary().getOclElementType(); pivotElement.getSuperClasses().add(oclElementType); diff --git a/tests/org.eclipse.qvtd.xtext.qvtimperative.tests/src/org/eclipse/qvtd/xtext/qvtimperative/tests/Tree2TallTree/Tree2TallTree.qvti b/tests/org.eclipse.qvtd.xtext.qvtimperative.tests/src/org/eclipse/qvtd/xtext/qvtimperative/tests/Tree2TallTree/Tree2TallTree.qvti index 39d189002..c9ddba447 100644 --- a/tests/org.eclipse.qvtd.xtext.qvtimperative.tests/src/org/eclipse/qvtd/xtext/qvtimperative/tests/Tree2TallTree/Tree2TallTree.qvti +++ b/tests/org.eclipse.qvtd.xtext.qvtimperative.tests/src/org/eclipse/qvtd/xtext/qvtimperative/tests/Tree2TallTree/Tree2TallTree.qvti @@ -52,7 +52,9 @@ map MiddleNode2TallNode in Tree2TallTree { in:tree2talltree node2tallNode : Node2TallNode; var tallNode_name : String := node2tallNode.name; var tallNode_children : Set(TallNode) := node2tallNode.children?.tallNode->asSet(); - var tallNode_height : Integer := if node2tallNode.children->notEmpty() then node2tallNode.children.tallNode.height->max() + 1 else 0 endif; + var node2tallNode_children := node2tallNode.children; + var tallNode_height : Integer; + init tallNode_height := if node2tallNode_children->notEmpty() then node2tallNode_children.tallNode.height->max() + 1 else 0 endif; new:talltree tallNode : TallNode; emit node2tallNode.tallNode := tallNode; set tallNode.name := tallNode_name; diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/test-gen/org/eclipse/qvtd/xtext/qvtrelation2/tests/forward2reverse/Forward2Reverse.java b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/test-gen/org/eclipse/qvtd/xtext/qvtrelation2/tests/forward2reverse/Forward2Reverse.java index 2ea60588a..bf4b44d53 100644 --- a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/test-gen/org/eclipse/qvtd/xtext/qvtrelation2/tests/forward2reverse/Forward2Reverse.java +++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/test-gen/org/eclipse/qvtd/xtext/qvtrelation2/tests/forward2reverse/Forward2Reverse.java @@ -353,8 +353,8 @@ public class Forward2Reverse extends AbstractTransformer * var when_Telement2element : PForward2Reverse::Telement2element[1] := forwardTarget.Telement2element; * var reverseElement : doublylinkedlist::Element[1] := trace.reverseElement; * var reverseSource : doublylinkedlist::Element[1] := when_Telement2element.reverseElement; - * set reverseElement.source := reverseSource; * set trace.reverseSource := reverseSource; + * set reverseElement.source := reverseSource; * */ protected boolean MAP_m_Telement2element_Element_46p3(final /*@NonInvalid*/ org.eclipse.qvtd.xtext.qvtrelation.tests.forward2reverse.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element forwardTarget) { @@ -378,8 +378,8 @@ public class Forward2Reverse extends AbstractTransformer @SuppressWarnings("null") final /*@Thrown*/ org.eclipse.qvtd.xtext.qvtrelation.tests.forward2reverse.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element reverseElement_0 = Telement2element_0.getReverseElement(); // mapping statements - reverseElement.setSource(reverseElement_0); Telement2element.setReverseSource(reverseElement_0); + reverseElement.setSource(reverseElement_0); final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean m_Telement2element_Element_p3 = ValueUtil.TRUE_VALUE; raw_when_Telement2element = m_Telement2element_Element_p3; } @@ -548,8 +548,8 @@ public class Forward2Reverse extends AbstractTransformer * var reverseList : doublylinkedlist::DoublyLinkedList[1] := trace.reverseList; * var when_Telement2element : PForward2Reverse::Telement2element[1] := forwardHead.Telement2element; * var reverseHead : doublylinkedlist::Element[1] := when_Telement2element.reverseElement; - * set trace.reverseHead := reverseHead; * set reverseList.headElement := reverseHead; + * set trace.reverseHead := reverseHead; * */ protected boolean MAP_m_Tlist2list_DoublyLinkedList_46p2(final /*@NonInvalid*/ org.eclipse.qvtd.xtext.qvtrelation.tests.forward2reverse.PForward2Reverse.@org.eclipse.jdt.annotation.NonNull Tlist2list trace_2) { @@ -568,8 +568,8 @@ public class Forward2Reverse extends AbstractTransformer @SuppressWarnings("null") final /*@Thrown*/ org.eclipse.qvtd.xtext.qvtrelation.tests.forward2reverse.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element reverseElement = Telement2element.getReverseElement(); // mapping statements - trace_2.setReverseHead(reverseElement); reverseList.setHeadElement(reverseElement); + trace_2.setReverseHead(reverseElement); final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean m_Tlist2list_DoublyLinkedList_p2 = ValueUtil.TRUE_VALUE; raw_when_Telement2element = m_Tlist2list_DoublyLinkedList_p2; } |