]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionVisitor.java
(refs #7371) Support for select keyword for CHR constraints
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / StandardExpressionVisitor.java
index b7ce06d92fc4ea01e3f9660ba8465514b26afda1..83bbd34d1bfe29356cf14811828fa1bfec7f9270 100644 (file)
@@ -1,6 +1,7 @@
 package org.simantics.scl.compiler.elaboration.expressions;
 
 import org.simantics.scl.compiler.elaboration.chr.CHRLiteral;
+import org.simantics.scl.compiler.elaboration.chr.CHRQuery;
 import org.simantics.scl.compiler.elaboration.chr.CHRRule;
 import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
 import org.simantics.scl.compiler.elaboration.equation.EqBasic;
@@ -198,6 +199,12 @@ EquationVisitor, StatementVisitor {
         expression.query.accept(this);
         expression.expression.accept(this);
     }
+    
+    @Override
+    public void visit(ECHRSelect expression) {
+        visit(expression.query);
+        expression.expression.accept(this);
+    }
 
     @Override
     public void visit(ESimpleLambda expression) {
@@ -356,14 +363,16 @@ EquationVisitor, StatementVisitor {
             equation.accept(this);
     }
     
+    public void visit(CHRQuery query) {
+        for(CHRLiteral literal : query.literals)
+            for(Expression parameter : literal.parameters)
+                parameter.accept(this);
+    }
+    
     public void visit(CHRRuleset ruleset) {
         for(CHRRule rule : ruleset.rules) {
-            for(CHRLiteral literal : rule.head.literals)
-                for(Expression parameter : literal.parameters)
-                    parameter.accept(this);
-            for(CHRLiteral literal : rule.body.literals)
-                for(Expression parameter : literal.parameters)
-                    parameter.accept(this);
+            visit(rule.head);
+            visit(rule.body);
         }
     }