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=50f29965130ddf38abfc888ef8cd3099cde29421;hb=70f4424a186f1df8e7cb195e41504b9312828e92;hp=e184b1397938e5604e91e90edaefd3699839c88d;hpb=d9a283acefae11c2cc094ed1c7b74759f8166f17;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 e184b1397..50f299651 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 @@ -5,6 +5,7 @@ import java.util.List; import org.simantics.scl.compiler.elaboration.chr.CHRRule; 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.CHRStatement; @@ -19,7 +20,7 @@ import org.simantics.scl.compiler.errors.Locations; public class EBlock extends ASTExpression { - ArrayList statements = new ArrayList(); + public ArrayList statements = new ArrayList(); boolean monadic; public EBlock() { @@ -75,10 +76,14 @@ public class EBlock extends ASTExpression { case Rule: in = extractRules(i, endId, in); break; - case CHR: - in = new ECHRRuleset(extractCHRRules(context, i, endId), in); + case CHR: { + CHRRuleset ruleset = extractCHRRules(context, i, endId); + long location = Locations.combine(ruleset.location, in.location); + in = new ECHRRuleset(ruleset, in); + in.location = location; break; } + } } } return in.resolve(context); @@ -95,7 +100,9 @@ public class EBlock extends ASTExpression { Statement statement = statements.get(i); if(statement instanceof CHRStatement) { CHRStatement chrStatement = (CHRStatement)statement; - ruleset.addRule(new CHRRule(chrStatement.location, chrStatement.head.translateAsHead(context), chrStatement.body.translateAsBody(context))); + ruleset.addRule(new CHRRule(chrStatement.location, + chrStatement.head.translate(context, CHRQueryTranslationMode.RULE_HEAD), + chrStatement.body.translate(context, CHRQueryTranslationMode.RULE_BODY))); } else if(statement instanceof ConstraintStatement) ruleset.constraints.add(CHRTranslation.convertConstraintStatement(context, (ConstraintStatement)statement));