X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fchr%2FCHRRule.java;h=78224ebb0d75d876f0da2528a4ab8fba56a33129;hb=21eae91e860f9f3cdb9cd0ee6fded24cdb8ca2f5;hp=0c81daafd8d3ddfa3b36b5ec327b5ca73f0c8a43;hpb=9a17c7c202c7104631fa5d899a4583a0cc2ad6ac;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRule.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRule.java index 0c81daafd..78224ebb0 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRule.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRule.java @@ -11,7 +11,6 @@ import org.simantics.scl.compiler.elaboration.contexts.TranslationContext; import org.simantics.scl.compiler.elaboration.contexts.TypingContext; import org.simantics.scl.compiler.elaboration.expressions.EVariable; import org.simantics.scl.compiler.elaboration.expressions.Variable; -import org.simantics.scl.compiler.elaboration.expressions.VariableProcedure; import org.simantics.scl.compiler.elaboration.expressions.printing.ExpressionToStringVisitor; import org.simantics.scl.compiler.errors.Locations; import org.simantics.scl.compiler.internal.parsing.Symbol; @@ -19,7 +18,6 @@ import org.simantics.scl.compiler.types.Types; import org.simantics.scl.compiler.types.kinds.Kinds; import gnu.trove.map.hash.TObjectIntHashMap; -import gnu.trove.set.hash.THashSet; import gnu.trove.set.hash.TIntHashSet; public class CHRRule extends Symbol { @@ -45,6 +43,10 @@ public class CHRRule extends Symbol { this.body = body; this.existentialVariables = existentialVariables; } + + public CHRRule(long location, CHRQuery head, CHRQuery body) { + this(location, head, body, null); + } public void resolve(TranslationContext context) { context.pushExistentialFrame(); @@ -54,11 +56,6 @@ public class CHRRule extends Symbol { existentialVariables = context.popExistentialFrame(); } - public void collectRefs(TObjectIntHashMap allRefs, TIntHashSet refs) { - head.collectRefs(allRefs, refs); - body.collectRefs(allRefs, refs); - } - public void checkType(TypingContext context) { for(Variable variable : existentialVariables) variable.setType(Types.metaVar(Kinds.STAR)); @@ -71,16 +68,6 @@ public class CHRRule extends Symbol { body.collectVars(allVars, vars); } - public void forVariables(VariableProcedure procedure) { - head.forVariables(procedure); - body.forVariables(procedure); - } - - public void collectFreeVariables(THashSet vars) { - head.collectFreeVariables(vars); - body.collectFreeVariables(vars); - } - public void setLocationDeep(long loc) { if(location == Locations.NO_LOCATION) { this.location = loc; @@ -104,7 +91,7 @@ public class CHRRule extends Symbol { Variable activeFact = new Variable("activeFact", constraint.factType); QueryPlanningContext context = new QueryPlanningContext(compilationContext, existentialVariables); - if(!head.createQueryPlan(context, new EVariable(activeFact), i)) + if(!head.createQueryPlan(context, new EVariable(activeFact), i, initConstraint)) return; body.createEnforcePlan(context, priority); addPlan(new CHRSearchPlan(constraint, activeFact, context.getPlanOps())); @@ -115,7 +102,7 @@ public class CHRRule extends Symbol { if(!hasLocalActiveLiteral) { Variable activeFact = new Variable("activeFact", initConstraint.factType); QueryPlanningContext context = new QueryPlanningContext(compilationContext, existentialVariables); - if(!head.createQueryPlan(context, null, -1)) + if(!head.createQueryPlan(context, new EVariable(activeFact), -1, initConstraint)) return; body.createEnforcePlan(context, priority); /*System.out.println(this);