X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2Fvisitors%2FCollectEffectsVisitor.java;h=10190d5a455ce271104fd2175a8135bebcf397f7;hb=4ebc60b24db646dc2c64dd54190b029b8e28d030;hp=aec3d84dc99e0ab6cd593d6556b1f3ffc81a4e81;hpb=ff1337ff96700fb157ec789cbef88b8f40e03798;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/visitors/CollectEffectsVisitor.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/visitors/CollectEffectsVisitor.java index aec3d84dc..10190d5a4 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/visitors/CollectEffectsVisitor.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/visitors/CollectEffectsVisitor.java @@ -1,13 +1,13 @@ package org.simantics.scl.compiler.elaboration.expressions.visitors; +import org.simantics.scl.compiler.elaboration.chr.CHRLiteral; +import org.simantics.scl.compiler.elaboration.chr.CHRRule; import org.simantics.scl.compiler.elaboration.expressions.EApply; -import org.simantics.scl.compiler.elaboration.expressions.ECHRRuleset; import org.simantics.scl.compiler.elaboration.expressions.ECHRSelect; import org.simantics.scl.compiler.elaboration.expressions.EFieldAccess; import org.simantics.scl.compiler.elaboration.expressions.ELambda; import org.simantics.scl.compiler.elaboration.expressions.ESimpleLambda; import org.simantics.scl.compiler.elaboration.expressions.ETransformation; -import org.simantics.scl.compiler.elaboration.expressions.StandardExpressionVisitor; import org.simantics.scl.compiler.types.Type; import org.simantics.scl.compiler.types.Types; @@ -23,15 +23,24 @@ public class CollectEffectsVisitor extends StandardExpressionVisitor { } @Override - public void visit(ECHRRuleset expression) { - effects.add(Types.PROC); - super.visit(expression); + public void visit(CHRRule rule) { + for(CHRLiteral literal : rule.head.literals) { + super.visit(literal); + literal.relation.collectQueryEffects(effects); + } + for(CHRLiteral literal : rule.body.literals) { + super.visit(literal); + literal.relation.collectEnforceEffects(effects); + } } @Override public void visit(ECHRSelect expression) { - effects.add(Types.PROC); - super.visit(expression); + for(CHRLiteral literal : expression.query.literals) { + super.visit(literal); + literal.relation.collectQueryEffects(effects); + } + expression.expression.accept(this); } @Override