diff options
Diffstat (limited to 'plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/evaluation/QVTiEvaluationVisitor.java')
-rw-r--r-- | plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/evaluation/QVTiEvaluationVisitor.java | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/evaluation/QVTiEvaluationVisitor.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/evaluation/QVTiEvaluationVisitor.java index e84bc076a..d86c5a288 100644 --- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/evaluation/QVTiEvaluationVisitor.java +++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/src/org/eclipse/qvtd/pivot/qvtimperative/evaluation/QVTiEvaluationVisitor.java @@ -23,6 +23,7 @@ import org.eclipse.ocl.pivot.Type; import org.eclipse.ocl.pivot.VariableDeclaration; import org.eclipse.ocl.pivot.ids.CollectionTypeId; import org.eclipse.ocl.pivot.internal.evaluation.BasicEvaluationVisitor; +import org.eclipse.ocl.pivot.internal.evaluation.CachingAnalysis; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.ocl.pivot.utilities.PivotUtil; @@ -301,6 +302,9 @@ public class QVTiEvaluationVisitor extends BasicEvaluationVisitor implements IQV assert name != null; if (ownedExpression != null) { Object initValue = ownedExpression.accept(undecoratedVisitor); + if (object.isCacheNeeded()) { + CachingAnalysis.initCaching(object, initValue); + } connection = interval.createConnection(name, ownedExpression.getTypeId(), object.isIsStrict()); if (initValue != null) { for (Object value : (Iterable<?>)initValue) { @@ -338,6 +342,9 @@ public class QVTiEvaluationVisitor extends BasicEvaluationVisitor implements IQV } else { initValue = ownedExpression.accept(undecoratedVisitor); + if (asStatement.isCacheNeeded()) { + CachingAnalysis.initCaching(asStatement, initValue); + } if (asStatement.isIsCheck()) { Type guardType = asStatement.getType(); Type valueType = idResolver.getDynamicTypeOf(initValue); |