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%2FEBlock.java;h=c911474eba8b39c41004b10cff3d7b824b73a8a4;hb=refs%2Fchanges%2F12%2F1712%2F1;hp=50f29965130ddf38abfc888ef8cd3099cde29421;hpb=70f4424a186f1df8e7cb195e41504b9312828e92;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EBlock.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EBlock.java index 50f299651..c911474eb 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EBlock.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EBlock.java @@ -8,6 +8,7 @@ import org.simantics.scl.compiler.elaboration.chr.CHRRuleset; import org.simantics.scl.compiler.elaboration.chr.ast.CHRQueryTranslationMode; import org.simantics.scl.compiler.elaboration.chr.translation.CHRTranslation; import org.simantics.scl.compiler.elaboration.contexts.TranslationContext; +import org.simantics.scl.compiler.elaboration.expressions.block.BlockType; import org.simantics.scl.compiler.elaboration.expressions.block.CHRStatement; import org.simantics.scl.compiler.elaboration.expressions.block.ConstraintStatement; import org.simantics.scl.compiler.elaboration.expressions.block.GuardStatement; @@ -21,19 +22,20 @@ import org.simantics.scl.compiler.errors.Locations; public class EBlock extends ASTExpression { public ArrayList statements = new ArrayList(); - boolean monadic; + BlockType blockType = BlockType.Normal; public EBlock() { + this.blockType = blockType; + } + + public void setBlockType(BlockType blockType) { + this.blockType = blockType; } public void addStatement(Statement statement) { statements.add(statement); } - public void setMonadic(boolean monadic) { - this.monadic = monadic; - } - public ArrayList getStatements() { return statements; } @@ -64,7 +66,7 @@ public class EBlock extends ASTExpression { Statement cur = statements.get(i); StatementGroup group = cur.getStatementGroup(); if(group == null) - in = cur.toExpression(context, monadic, in); + in = cur.toExpression(context, blockType, in); else { int endId = i+1; while(i>0 && statements.get(i-1).getStatementGroup() == group) @@ -105,7 +107,7 @@ public class EBlock extends ASTExpression { chrStatement.body.translate(context, CHRQueryTranslationMode.RULE_BODY))); } else if(statement instanceof ConstraintStatement) - ruleset.constraints.add(CHRTranslation.convertConstraintStatement(context, (ConstraintStatement)statement)); + ruleset.addConstraint(CHRTranslation.convertConstraintStatement(context, (ConstraintStatement)statement)); else if(statement instanceof IncludeStatement) ruleset.includes.add((IncludeStatement)statement); else @@ -146,7 +148,7 @@ public class EBlock extends ASTExpression { @Override public int getSyntacticFunctionArity() { - if(monadic) + if(blockType != BlockType.Normal) return 0; Statement lastStatement = statements.get(statements.size()-1); if(!(lastStatement instanceof GuardStatement))