]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/profiling/BranchPointInjector.java
Merge "Re-enabled Acorn transaction cancellation support for testing"
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / elaboration / profiling / BranchPointInjector.java
index 930dfe14b547208cb2dba5e228379aa700491b6e..3d7350f9f7863bc1cd7e63313d5767ab0505e269 100644 (file)
@@ -3,12 +3,14 @@ package org.simantics.scl.compiler.internal.elaboration.profiling;
 import java.util.ArrayList;
 
 import org.simantics.scl.compiler.elaboration.expressions.Case;
+import org.simantics.scl.compiler.elaboration.expressions.EAmbiguous;
 import org.simantics.scl.compiler.elaboration.expressions.EApply;
 import org.simantics.scl.compiler.elaboration.expressions.EApplyType;
 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;
@@ -119,7 +121,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;
     }
     
@@ -159,6 +162,12 @@ public class BranchPointInjector extends StandardExpressionTransformer {
         return expression;
     }
     
+    @Override
+    public Expression transform(EAmbiguous expression) {
+        ++codeCounter;
+        return super.transform(expression);
+    }
+    
     @Override
     public Expression transform(EApply expression) {
         ++codeCounter;
@@ -189,6 +198,12 @@ public class BranchPointInjector extends StandardExpressionTransformer {
         return super.transform(expression);
     }
     
+    @Override
+    public Expression transform(ECHRRuleset expression) {
+        ++codeCounter;
+        return super.transform(expression);
+    }
+    
     @Override
     public Expression transform(EConstant expression) {
         ++codeCounter;