]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionVisitor.java
Merged changes from feature/scl to master.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / StandardExpressionVisitor.java
index 93ddf6fa54e4887d63ac432a0704334b9fea2b2c..7a562a83c2c56f47ed3b1c50fbecb09e893f3d48 100644 (file)
@@ -1,5 +1,7 @@
 package org.simantics.scl.compiler.elaboration.expressions;\r
 \r
+import org.simantics.scl.compiler.elaboration.chr.CHRLiteral;\r
+import org.simantics.scl.compiler.elaboration.chr.CHRRule;\r
 import org.simantics.scl.compiler.elaboration.equation.EqBasic;\r
 import org.simantics.scl.compiler.elaboration.equation.EqGuard;\r
 import org.simantics.scl.compiler.elaboration.equation.Equation;\r
@@ -90,7 +92,8 @@ EquationVisitor {
     public void visit(EIf expression) {\r
         expression.condition.accept(this);\r
         expression.then_.accept(this);\r
-        expression.else_.accept(this);\r
+        if(expression.else_ != null)\r
+            expression.else_.accept(this);\r
     }\r
 \r
     @Override\r
@@ -104,6 +107,12 @@ EquationVisitor {
         for(Case case_ : expression.cases)\r
             visit(case_);\r
     }\r
+    \r
+    @Override\r
+    public void visit(EViewPattern expression) {\r
+        expression.expression.accept(this);\r
+        expression.pattern.accept(this);\r
+    }\r
 \r
     public void visit(Case case_) {\r
         for(Expression pattern : case_.patterns)\r
@@ -334,4 +343,17 @@ EquationVisitor {
             equation.accept(this);\r
     }\r
 \r
+    @Override\r
+    public void visit(ECHRRuleset ruleset) {\r
+        for(CHRRule rule : ruleset.ruleset.rules) {\r
+            for(CHRLiteral literal : rule.head.literals)\r
+                for(Expression parameter : literal.parameters)\r
+                    parameter.accept(this);\r
+            for(CHRLiteral literal : rule.body.literals)\r
+                for(Expression parameter : literal.parameters)\r
+                    parameter.accept(this);\r
+        }\r
+        ruleset.in.accept(this);\r
+    }\r
+\r
 }\r