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%2FStandardExpressionTransformer.java;h=948f7c645380b03ace647558546579ef09ceba68;hb=refs%2Fchanges%2F37%2F737%2F1;hp=1a2f451eeab205b8aff61a0ae5d655a2750660f4;hpb=3303fe4a3b363e88662ac75a4f7e873ddb3ab352;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionTransformer.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionTransformer.java index 1a2f451ee..948f7c645 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionTransformer.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/StandardExpressionTransformer.java @@ -1,13 +1,18 @@ 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; import org.simantics.scl.compiler.elaboration.equation.EqGuard; import org.simantics.scl.compiler.elaboration.equation.Equation; import org.simantics.scl.compiler.elaboration.equation.EquationVisitor; import org.simantics.scl.compiler.elaboration.expressions.accessor.ExpressionAccessor; -import org.simantics.scl.compiler.elaboration.expressions.accessor.FieldAccessor; import org.simantics.scl.compiler.elaboration.expressions.block.BindStatement; +import org.simantics.scl.compiler.elaboration.expressions.block.CHRStatement; import org.simantics.scl.compiler.elaboration.expressions.block.GuardStatement; +import org.simantics.scl.compiler.elaboration.expressions.block.IncludeStatement; import org.simantics.scl.compiler.elaboration.expressions.block.LetStatement; import org.simantics.scl.compiler.elaboration.expressions.block.RuleStatement; import org.simantics.scl.compiler.elaboration.expressions.block.Statement; @@ -40,6 +45,8 @@ EquationVisitor { @Override public Expression transform(EAmbiguous expression) { + if(expression.resolvedExpression != null) + expression.resolvedExpression = expression.resolvedExpression.accept(this); return expression; } @@ -79,6 +86,13 @@ EquationVisitor { return expression; } + @Override + public Expression transform(EViewPattern expression) { + expression.expression = expression.expression.accept(this); + expression.pattern = expression.pattern.accept(this); + return expression; + } + @Override public Expression transform(EBlock expression) { for(Statement statement : expression.statements) @@ -110,21 +124,51 @@ EquationVisitor { } @Override - public Expression transform(EConstant expression) { + public void visit(IncludeStatement statement) { + statement.value = statement.value.accept(this); + } + + public void transform(CHRQuery query) { + for(CHRLiteral lit : query.literals) + for(int i=0;i