X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fchr%2Fast%2FCHRAstAtom.java;h=7b5f4ffa6b97c42105cdde72f0bbf80865bbcd64;hp=031d8edd84d2e733f99292f6ea7561759d2534a6;hb=f68216dcf2f9c186211bc38847cdea345b5a0635;hpb=d9a283acefae11c2cc094ed1c7b74759f8166f17 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/ast/CHRAstAtom.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/ast/CHRAstAtom.java index 031d8edd8..7b5f4ffa6 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/ast/CHRAstAtom.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/ast/CHRAstAtom.java @@ -86,11 +86,16 @@ public class CHRAstAtom extends CHRAstQuery { } @Override - protected void translate(TranslationContext context, boolean isHead, ArrayList literals) { - literals.add( - isConstraint(context, expression) ? - convertConstraint(remove, expression) : - convertExpression(isHead, expression)); + protected void translate(TranslationContext context, CHRQueryTranslationMode mode, ArrayList literals) { + if(isConstraint(context, expression)) { + literals.add(convertConstraint(remove, expression)); + } + else { + if(remove) + context.getErrorLog().log(location, "Only constraints can be marked for removal"); + else + literals.add(convertExpression(mode, expression)); + } } private static boolean isConstraint(TranslationContext context, Expression expression) { @@ -110,8 +115,8 @@ public class CHRAstAtom extends CHRAstQuery { } } - private static CHRLiteral convertExpression(boolean isHead, Expression expression) { - if(isHead) + private static CHRLiteral convertExpression(CHRQueryTranslationMode mode, Expression expression) { + if(mode.isHead) return new CHRLiteral(expression.location, SpecialCHRRelation.CHECK, new Expression[] {expression}, false, false); else return new CHRLiteral(expression.location, SpecialCHRRelation.EXECUTE, new Expression[] {expression}, false, false);