X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2FECHRSelect.java;h=db651684f0ee124252abc9adb73721ce05d094be;hp=bf3b818f56c01c844b078705751ca1f3d20fd873;hb=4ebc60b24db646dc2c64dd54190b029b8e28d030;hpb=fe1a2f532761669e67da4db4ae15096ced8a04db diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/ECHRSelect.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/ECHRSelect.java index bf3b818f5..db651684f 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/ECHRSelect.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/ECHRSelect.java @@ -2,6 +2,7 @@ package org.simantics.scl.compiler.elaboration.expressions; import java.util.ArrayList; +import org.simantics.scl.compiler.common.exceptions.InternalCompilerError; import org.simantics.scl.compiler.common.names.Names; import org.simantics.scl.compiler.compilation.CompilationContext; import org.simantics.scl.compiler.constants.NoRepConstant; @@ -11,6 +12,7 @@ import org.simantics.scl.compiler.elaboration.chr.plan.PlanContext; import org.simantics.scl.compiler.elaboration.chr.plan.PlanOp; import org.simantics.scl.compiler.elaboration.chr.plan.PlanRealizer; import org.simantics.scl.compiler.elaboration.chr.planning.QueryPlanningContext; +import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext; import org.simantics.scl.compiler.elaboration.contexts.SimplificationContext; import org.simantics.scl.compiler.elaboration.contexts.TranslationContext; import org.simantics.scl.compiler.elaboration.contexts.TypingContext; @@ -51,17 +53,16 @@ public class ECHRSelect extends Expression { public Expression simplify(SimplificationContext simplificationContext) { this.expression = expression.simplify(simplificationContext); query.simplify(simplificationContext); - - CompilationContext compilationContext = simplificationContext.getCompilationContext(); - QueryPlanningContext context = new QueryPlanningContext(compilationContext, existentialVariables); - if(query.createQueryPlan(context, null, -1, null)) - planOps = context.getPlanOps(); return this; } @Override public IVal toVal(CompilationContext context, CodeWriter w) { + QueryPlanningContext queryContext = new QueryPlanningContext(context, existentialVariables); + if(query.createQueryPlan(queryContext, null, -1, null)) + planOps = queryContext.getPlanOps(); + IVal list = w.apply(location, context.getValue(Names.MList_create).getValue(), NoRepConstant.UNIT); planOps.add(new PlanOp(location) { @Override @@ -103,4 +104,25 @@ public class ECHRSelect extends Expression { public Expression accept(ExpressionTransformer transformer) { return transformer.transform(this); } + + @Override + public Expression replace(ReplaceContext context) { + Variable[] newExistentialVariables = new Variable[existentialVariables.length]; + for(int i=0;i(planOps.size()); + throw new InternalCompilerError(location, "Copying of ECHRSelect is not supported."); + //for(PlanOp op : planOps) + // copy.planOps.add(op.replace(context)); + } + return copy; + } }