]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/matching2/PatternMatchingCompiler2.java
(refs #7414) Added Dynamic constructor
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / elaboration / matching2 / PatternMatchingCompiler2.java
index 8ca51b275f900a439d5b7a5025ab3d2e96444588..24a3bfb2edcc2e8208aefa4435974fec8b31af47 100644 (file)
@@ -16,6 +16,7 @@ import org.simantics.scl.compiler.elaboration.expressions.ELiteral;
 import org.simantics.scl.compiler.elaboration.expressions.EVariable;
 import org.simantics.scl.compiler.elaboration.expressions.EViewPattern;
 import org.simantics.scl.compiler.elaboration.expressions.Expression;
+import org.simantics.scl.compiler.elaboration.java.DynamicConstructor;
 import org.simantics.scl.compiler.elaboration.modules.SCLValue;
 import org.simantics.scl.compiler.elaboration.modules.TypeConstructor;
 import org.simantics.scl.compiler.internal.codegen.continuations.Branch;
@@ -93,7 +94,7 @@ public class PatternMatchingCompiler2 {
                 if(constructor_ instanceof EConstant) {
                     SCLValue constructor = ((EConstant)constructor_).getValue();
     
-                    ExpressionMatrix matrix = matrixMap.get(constructor.getName());
+                    ExpressionMatrix matrix = constructor.getValue() == DynamicConstructor.INSTANCE ? null : matrixMap.get(constructor.getName());
                     if(matrix == null) {
                         CodeWriter newW = w.createBlock(Types.getTypes(parameters));
                         branches.add(new Branch((Constant)constructor.getValue(), newW.getContinuation()));