X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fchr%2Frelations%2FSpecialCHRRelation.java;h=52da4cfe03fbe1fda90f445db6fb3d04b486bc68;hb=f68216dcf2f9c186211bc38847cdea345b5a0635;hp=dac751480e6c3a3cf28c1d41f6743a180c905bac;hpb=ca40974f87c9db00eb77aaf1acc1e9937b37261b;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/relations/SpecialCHRRelation.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/relations/SpecialCHRRelation.java index dac751480..52da4cfe0 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/relations/SpecialCHRRelation.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/relations/SpecialCHRRelation.java @@ -1,31 +1,37 @@ -package org.simantics.scl.compiler.elaboration.chr.relations; - -import org.simantics.scl.compiler.elaboration.chr.CHRRelation; -import org.simantics.scl.compiler.types.TVar; -import org.simantics.scl.compiler.types.Type; -import org.simantics.scl.compiler.types.Types; - -public enum SpecialCHRRelation implements CHRRelation { - EQUALS(A, A), - MEMBER(A, Types.list(A)), - CHECK(Types.BOOLEAN), - EXECUTE(Types.UNIT); - - private final TVar[] typeVariables; - private final Type[] parameterTypes; - - private SpecialCHRRelation(Type ... parameterTypes) { - this.typeVariables = Types.freeVarsArray(parameterTypes); - this.parameterTypes = parameterTypes; - } - - @Override - public TVar[] getTypeVariables() { - return typeVariables; - } - - @Override - public Type[] getParameterTypes() { - return parameterTypes; - } -} +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; + +public enum SpecialCHRRelation implements CHRRelation { + 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; + + private SpecialCHRRelation(Type ... parameterTypes) { + this.typeVariables = Types.freeVarsArray(parameterTypes); + this.parameterTypes = parameterTypes; + } + + @Override + public TVar[] getTypeVariables() { + return typeVariables; + } + + @Override + public Type[] getParameterTypes() { + return parameterTypes; + } + + public TPred[] getTypeConstraints() { + return TPred.EMPTY_ARRAY; + } +}