]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRQuery.java
(refs #7371) Support for select keyword for CHR constraints
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / chr / CHRQuery.java
index 5cb0f2aee230acb6f79838fd358612c81edc024f..70559d18f6f223543b4a99d9e7ba144ac9266c1e 100644 (file)
@@ -13,6 +13,7 @@ import org.simantics.scl.compiler.elaboration.expressions.VariableProcedure;
 import org.simantics.scl.compiler.elaboration.expressions.printing.ExpressionToStringVisitor;
 import org.simantics.scl.compiler.errors.Locations;
 import org.simantics.scl.compiler.internal.parsing.Symbol;
+import org.simantics.scl.compiler.types.Type;
 
 import gnu.trove.map.hash.TObjectIntHashMap;
 import gnu.trove.set.hash.THashSet;
@@ -71,7 +72,7 @@ public class CHRQuery extends Symbol {
             else
                 context.add(literal, i);
         }
-        if(activeLiteralId == -1) {
+        if(activeLiteralId == -1 && inputFact != null) {
             context.addInitFact(initConstraint, inputFact);
         }      
         return context.createQueryPlan();
@@ -95,4 +96,14 @@ public class CHRQuery extends Symbol {
         visitor.visit(this);
         return b.toString();
     }
+
+    public void collectQueryEffects(THashSet<Type> effects) {
+        for(CHRLiteral literal : literals)
+            literal.collectQueryEffects(effects);
+    }
+    
+    public void collectEnforceEffects(THashSet<Type> effects) {
+        for(CHRLiteral literal : literals)
+            literal.collectEnforceEffects(effects);
+    }
 }