]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/relations/SpecialCHRRelation.java
(refs #7375) Fixed implementation of collectEffects
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / chr / relations / SpecialCHRRelation.java
index 2cb0d64fd072e10d32b89858c28d6623acd1908f..8abf73b3eae2827c16efc30d17b302ccfcb243af 100644 (file)
@@ -1,15 +1,19 @@
 package org.simantics.scl.compiler.elaboration.chr.relations;
 
 import org.simantics.scl.compiler.elaboration.chr.CHRRelation;
+import org.simantics.scl.compiler.types.TPred;
 import org.simantics.scl.compiler.types.TVar;
 import org.simantics.scl.compiler.types.Type;
 import org.simantics.scl.compiler.types.Types;
 
+import gnu.trove.set.hash.THashSet;
+
 public enum SpecialCHRRelation implements CHRRelation {    
-    EQUALS(A, A),
-    MEMBER(A, Types.list(A)),
-    CHECK(Types.BOOLEAN),
-    EXECUTE(Types.UNIT);
+    EQUALS(A, A), // only in head
+    ASSIGN(A, A), // only in body
+    MEMBER(A, Types.list(A)), // only in head
+    CHECK(Types.BOOLEAN), // only in head
+    EXECUTE(Types.UNIT); // only in body
     
     private final TVar[] typeVariables;
     private final Type[] parameterTypes;
@@ -28,4 +32,16 @@ public enum SpecialCHRRelation implements CHRRelation {
     public Type[] getParameterTypes() {
         return parameterTypes;
     }
+    
+    public TPred[] getTypeConstraints() {
+        return TPred.EMPTY_ARRAY;
+    }
+
+    @Override
+    public void collectEnforceEffects(THashSet<Type> effects) {
+    }
+
+    @Override
+    public void collectQueryEffects(THashSet<Type> effects) {
+    }
 }