X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2FStandardExpressionVisitor.java;h=7a562a83c2c56f47ed3b1c50fbecb09e893f3d48;hp=93ddf6fa54e4887d63ac432a0704334b9fea2b2c;hb=a8758de5bc19e5adb3f618d3038743a164f09912;hpb=12d9af17384d960b75d58c3935d2b7b46d93e87b diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionVisitor.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionVisitor.java index 93ddf6fa5..7a562a83c 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionVisitor.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionVisitor.java @@ -1,5 +1,7 @@ package org.simantics.scl.compiler.elaboration.expressions; +import org.simantics.scl.compiler.elaboration.chr.CHRLiteral; +import org.simantics.scl.compiler.elaboration.chr.CHRRule; import org.simantics.scl.compiler.elaboration.equation.EqBasic; import org.simantics.scl.compiler.elaboration.equation.EqGuard; import org.simantics.scl.compiler.elaboration.equation.Equation; @@ -90,7 +92,8 @@ EquationVisitor { public void visit(EIf expression) { expression.condition.accept(this); expression.then_.accept(this); - expression.else_.accept(this); + if(expression.else_ != null) + expression.else_.accept(this); } @Override @@ -104,6 +107,12 @@ EquationVisitor { for(Case case_ : expression.cases) visit(case_); } + + @Override + public void visit(EViewPattern expression) { + expression.expression.accept(this); + expression.pattern.accept(this); + } public void visit(Case case_) { for(Expression pattern : case_.patterns) @@ -334,4 +343,17 @@ EquationVisitor { equation.accept(this); } + @Override + public void visit(ECHRRuleset ruleset) { + for(CHRRule rule : ruleset.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); + } + ruleset.in.accept(this); + } + }