package org.simantics.scl.compiler.elaboration.relations;
-import static org.simantics.scl.compiler.elaboration.expressions.Expressions.*;
+import static org.simantics.scl.compiler.elaboration.expressions.Expressions.apply;
+import static org.simantics.scl.compiler.elaboration.expressions.Expressions.newVar;
+import static org.simantics.scl.compiler.elaboration.expressions.Expressions.tuple;
+import static org.simantics.scl.compiler.elaboration.expressions.Expressions.var;
+import static org.simantics.scl.compiler.elaboration.expressions.Expressions.vars;
import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
-import org.simantics.scl.compiler.common.names.Name;
-import org.simantics.scl.compiler.elaboration.expressions.ERuleset;
+import org.simantics.scl.compiler.common.names.Names;
import org.simantics.scl.compiler.elaboration.expressions.EVariable;
import org.simantics.scl.compiler.elaboration.expressions.Expressions;
import org.simantics.scl.compiler.elaboration.expressions.Variable;
private void createTable() {
this.table = newVar("table" + name,
- Types.apply(ERuleset.MSet, Types.tuple(parameterTypes)));
+ Types.apply(Names.MSet_T, Types.tuple(parameterTypes)));
}
public int getArity() {
return 0;
}
- private static final Name MSet_contains = Name.create("MSet", "contains");
- private static final Name EQ = Name.create("Prelude", "==");
@Override
public void generate(long location,
QueryCompilationContext context,
if(table == null)
throw new InternalCompilerError(location, "Variable table is undefined.");
if(boundVariables + 1 == 1 << parameters.length)
- context.condition(apply(context, Types.PROC,
- MSet_contains, Types.tuple(parameterTypes),
+ context.condition(apply(context.getCompilationContext(), Types.PROC,
+ Names.MSet_contains, Types.tuple(parameterTypes),
var(table),
tuple(vars(parameters))
));
Variable row = new Variable("row", Types.tuple(parameterTypes));
for(int i=0;i<parameters.length;++i)
if(((boundVariables>>i)&1) == 1)
- context.condition(apply(context, Types.NO_EFFECTS,
- EQ, parameterTypes[i],
- context.getEvidence(location, Types.pred(Types.EQ, parameterTypes[i])),
+ context.condition(apply(context.getCompilationContext(), Types.NO_EFFECTS,
+ Names.Builtin_equals, parameterTypes[i],
var(aux[i]),
var(parameters[i])
));
public String toString() {
return name;
}
+
+ @Override
+ public Type getEnforceEffect() {
+ return Types.PROC;
+ }
+
+ @Override
+ public Type getQueryEffect() {
+ return Types.PROC;
+ }
}