]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/profiling/BranchPointInjector.java
(refs #7375) Replaced collectFreeVariables method by a visitor
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / elaboration / profiling / BranchPointInjector.java
index dff4622215473df74bced2f8bcebca7da746dc9a..eed6d85552c62cf63f4b2028d84fd5990597b0dc 100644 (file)
@@ -10,10 +10,10 @@ import org.simantics.scl.compiler.elaboration.expressions.EAsPattern;
 import org.simantics.scl.compiler.elaboration.expressions.EBinary;
 import org.simantics.scl.compiler.elaboration.expressions.EBind;
 import org.simantics.scl.compiler.elaboration.expressions.EBlock;
+import org.simantics.scl.compiler.elaboration.expressions.ECHRRuleset;
 import org.simantics.scl.compiler.elaboration.expressions.EConstant;
 import org.simantics.scl.compiler.elaboration.expressions.ECoveringBranchPoint;
 import org.simantics.scl.compiler.elaboration.expressions.EEnforce;
-import org.simantics.scl.compiler.elaboration.expressions.EEntityTypeAnnotation;
 import org.simantics.scl.compiler.elaboration.expressions.EError;
 import org.simantics.scl.compiler.elaboration.expressions.EExternalConstant;
 import org.simantics.scl.compiler.elaboration.expressions.EFieldAccess;
@@ -46,7 +46,6 @@ import org.simantics.scl.compiler.elaboration.expressions.EWhen;
 import org.simantics.scl.compiler.elaboration.expressions.Expression;
 import org.simantics.scl.compiler.elaboration.expressions.GuardedExpression;
 import org.simantics.scl.compiler.elaboration.expressions.GuardedExpressionGroup;
-import org.simantics.scl.compiler.elaboration.expressions.StandardExpressionTransformer;
 import org.simantics.scl.compiler.elaboration.expressions.block.BindStatement;
 import org.simantics.scl.compiler.elaboration.expressions.block.GuardStatement;
 import org.simantics.scl.compiler.elaboration.expressions.block.LetStatement;
@@ -57,6 +56,7 @@ import org.simantics.scl.compiler.elaboration.expressions.list.ListGuard;
 import org.simantics.scl.compiler.elaboration.expressions.list.ListQualifier;
 import org.simantics.scl.compiler.elaboration.expressions.list.ListSeq;
 import org.simantics.scl.compiler.elaboration.expressions.list.ListThen;
+import org.simantics.scl.compiler.elaboration.expressions.visitors.StandardExpressionTransformer;
 import org.simantics.scl.compiler.elaboration.query.QAlternative;
 import org.simantics.scl.compiler.elaboration.query.QAtom;
 import org.simantics.scl.compiler.elaboration.query.QConjunction;
@@ -120,7 +120,8 @@ public class BranchPointInjector extends StandardExpressionTransformer {
         ++codeCounter;
         expression.condition = expression.condition.accept(this);
         expression.then_ = injectBranchPoint(expression.then_);
-        expression.else_ = injectBranchPoint(expression.else_);
+        if(expression.else_ != null)
+            expression.else_ = injectBranchPoint(expression.else_);
         return expression;
     }
     
@@ -197,25 +198,25 @@ public class BranchPointInjector extends StandardExpressionTransformer {
     }
     
     @Override
-    public Expression transform(EConstant expression) {
+    public Expression transform(ECHRRuleset expression) {
         ++codeCounter;
         return super.transform(expression);
     }
     
     @Override
-    public Expression transform(ECoveringBranchPoint expression) {
+    public Expression transform(EConstant expression) {
         ++codeCounter;
         return super.transform(expression);
     }
     
     @Override
-    public Expression transform(EEnforce expression) {
+    public Expression transform(ECoveringBranchPoint expression) {
         ++codeCounter;
         return super.transform(expression);
     }
     
     @Override
-    public Expression transform(EEntityTypeAnnotation expression) {
+    public Expression transform(EEnforce expression) {
         ++codeCounter;
         return super.transform(expression);
     }