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.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;
- 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);
+ }
- effects.add(Types.PROC);
- super.visit(expression);
+ for(CHRLiteral literal : expression.query.literals) {
+ super.visit(literal);
+ literal.relation.collectQueryEffects(effects);
+ }
+ expression.expression.accept(this);