diff options
Diffstat (limited to 'plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPreOrderVisitor.java')
-rw-r--r-- | plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/cs2as/QVTimperativeCSPreOrderVisitor.java | 34 |
1 files changed, 19 insertions, 15 deletions
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 a61c09d2e..e4db4c055 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 @@ -29,6 +29,7 @@ import org.eclipse.ocl.xtext.base.cs2as.PivotDependency; import org.eclipse.ocl.xtext.base.cs2as.SingleContinuation; import org.eclipse.ocl.xtext.basecs.ElementCS; import org.eclipse.ocl.xtext.basecs.PathNameCS; +import org.eclipse.ocl.xtext.basecs.PivotableElementCS; import org.eclipse.ocl.xtext.basecs.TypedRefCS; import org.eclipse.ocl.xtext.essentialoclcs.VariableCS; import org.eclipse.qvtd.pivot.qvtbase.Function; @@ -36,7 +37,6 @@ import org.eclipse.qvtd.pivot.qvtbase.FunctionParameter; import org.eclipse.qvtd.pivot.qvtbase.Transformation; import org.eclipse.qvtd.pivot.qvtimperative.DeclareStatement; import org.eclipse.qvtd.pivot.qvtimperative.GuardVariable; -import org.eclipse.qvtd.pivot.qvtimperative.ImperativeDomain; import org.eclipse.qvtd.pivot.qvtimperative.InConnectionVariable; import org.eclipse.qvtd.pivot.qvtimperative.LoopVariable; import org.eclipse.qvtd.pivot.qvtimperative.Mapping; @@ -44,12 +44,13 @@ import org.eclipse.qvtd.pivot.qvtimperative.MappingCall; import org.eclipse.qvtd.pivot.qvtimperative.MappingCallBinding; import org.eclipse.qvtd.pivot.qvtimperative.MappingLoop; import org.eclipse.qvtd.pivot.qvtimperative.NewStatement; +import org.eclipse.qvtd.pivot.qvtimperative.ObservableStatement; import org.eclipse.qvtd.pivot.qvtimperative.OutConnectionVariable; import org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage; +import org.eclipse.qvtd.xtext.qvtimperativecs.AddStatementCS; import org.eclipse.qvtd.xtext.qvtimperativecs.CheckStatementCS; import org.eclipse.qvtd.xtext.qvtimperativecs.DeclareStatementCS; import org.eclipse.qvtd.xtext.qvtimperativecs.DirectionCS; -import org.eclipse.qvtd.xtext.qvtimperativecs.DomainCS; import org.eclipse.qvtd.xtext.qvtimperativecs.GuardVariableCS; import org.eclipse.qvtd.xtext.qvtimperativecs.InoutVariableCS; import org.eclipse.qvtd.xtext.qvtimperativecs.MappingCS; @@ -252,27 +253,36 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr } } - private void refreshUsedProperties(@NonNull DomainCS csDomain, - /*@NonNull*/ List<Property> asProperties, /*@NonNull*/ List<PathNameCS> csProperties) { + private void refreshObservedProperties(@NonNull PivotableElementCS csElement, /*@NonNull*/ List<PathNameCS> csProperties) { + ObservableStatement asElement = PivotUtil.getPivot(ObservableStatement.class, csElement); + assert asElement != null; List<Property> properties = new ArrayList<Property>(); for (PathNameCS csPathName : csProperties) { if (csPathName != null) { - Property asProperty = lookupProperty(csDomain, csPathName, null); + Property asProperty = lookupProperty(csElement, csPathName, null); if (asProperty != null) { properties.add(asProperty); } } } - context.refreshList(asProperties, properties); + context.refreshList(asElement.getObservedProperties(), properties); + } + + @Override + public Continuation<?> visitAddStatementCS(@NonNull AddStatementCS csElement) { + refreshObservedProperties(csElement, csElement.getObservedProperties()); + return null; } @Override public Continuation<?> visitCheckStatementCS(@NonNull CheckStatementCS csElement) { + refreshObservedProperties(csElement, csElement.getObservedProperties()); return null; } @Override public @Nullable Continuation<?> visitDeclareStatementCS(@NonNull DeclareStatementCS csElement) { + refreshObservedProperties(csElement, csElement.getObservedProperties()); return new DeclareStatementCompletion(context, csElement); } @@ -282,15 +292,6 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr } @Override - public @Nullable Continuation<?> visitDomainCS(@NonNull DomainCS csDomain) { - ImperativeDomain asArea = PivotUtil.getPivot(ImperativeDomain.class, csDomain); - if (asArea != null) { - refreshUsedProperties(csDomain, asArea.getCheckedProperties(), csDomain.getCheckedProperties()); - } - return null; - } - - @Override public @Nullable Continuation<?> visitGuardVariableCS(@NonNull GuardVariableCS csElement) { return new GuardVariableCompletion(context, csElement); } @@ -329,11 +330,13 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr @Override public Continuation<?> visitMappingLoopCS(@NonNull MappingLoopCS csElement) { + refreshObservedProperties(csElement, csElement.getObservedProperties()); return new MappingLoopIteratorCompletion(context, csElement); } @Override public Continuation<?> visitNewStatementCS(@NonNull NewStatementCS csElement) { + refreshObservedProperties(csElement, csElement.getObservedProperties()); return new NewStatementCompletion(context, csElement); } @@ -354,6 +357,7 @@ public class QVTimperativeCSPreOrderVisitor extends AbstractQVTimperativeCSPreOr @Override public Continuation<?> visitSetStatementCS(@NonNull SetStatementCS csElement) { + refreshObservedProperties(csElement, csElement.getObservedProperties()); return null; } |