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%2FCHRQuery.java;h=6b01d99531f9d30db25fe0277e0f98d435632729;hb=08a43c849e0bed256394e3861326af9ce26a9917;hp=5cb0f2aee230acb6f79838fd358612c81edc024f;hpb=e81aaf01a022b7f9fd54924f843a8f8594682126;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRQuery.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRQuery.java index 5cb0f2aee..6b01d9953 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRQuery.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRQuery.java @@ -1,28 +1,32 @@ package org.simantics.scl.compiler.elaboration.chr; +import org.simantics.scl.compiler.common.exceptions.InternalCompilerError; import org.simantics.scl.compiler.elaboration.chr.plan.PostCommitOp; import org.simantics.scl.compiler.elaboration.chr.plan.PreCommitOp; import org.simantics.scl.compiler.elaboration.chr.planning.QueryPlanningContext; import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint; +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; import org.simantics.scl.compiler.elaboration.expressions.Expression; +import org.simantics.scl.compiler.elaboration.expressions.ExpressionVisitor; 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.elaboration.expressions.visitors.ForVariablesUsesVisitor; +import org.simantics.scl.compiler.elaboration.expressions.visitors.StandardExpressionVisitor; import org.simantics.scl.compiler.errors.Locations; import org.simantics.scl.compiler.internal.parsing.Symbol; import gnu.trove.map.hash.TObjectIntHashMap; -import gnu.trove.set.hash.THashSet; import gnu.trove.set.hash.TIntHashSet; public class CHRQuery extends Symbol { public CHRLiteral[] literals; - public CHRQuery(CHRLiteral[] literals) { + public CHRQuery(long location, CHRLiteral[] literals) { this.literals = literals; + this.location = location; } public void resolve(TranslationContext context) { @@ -30,11 +34,6 @@ public class CHRQuery extends Symbol { literal.resolve(context); } - public void collectRefs(TObjectIntHashMap allRefs, TIntHashSet refs) { - for(CHRLiteral literal : literals) - literal.collectRefs(allRefs, refs); - } - public void checkType(TypingContext context) { for(CHRLiteral literal : literals) literal.checkType(context); @@ -44,17 +43,7 @@ public class CHRQuery extends Symbol { for(CHRLiteral literal : literals) literal.collectVars(allVars, vars); } - - public void forVariables(VariableProcedure procedure) { - for(CHRLiteral literal : literals) - literal.forVariables(procedure); - } - - public void collectFreeVariables(THashSet vars) { - for(CHRLiteral literal : literals) - literal.collectFreeVariables(vars); - } - + public void setLocationDeep(long loc) { if(location == Locations.NO_LOCATION) { this.location = loc; @@ -64,17 +53,21 @@ public class CHRQuery extends Symbol { } public boolean createQueryPlan(QueryPlanningContext context, Expression inputFact, int activeLiteralId, CHRConstraint initConstraint) { - for(int i=0;i