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%2Frelations%2FLocalRelation.java;h=3fbeef75525671c41daee45dbd80e8b9213015f2;hp=0a193d6c1e89806b0daff39a8b2ffc7c87ea2622;hb=a8758de5bc19e5adb3f618d3038743a164f09912;hpb=12d9af17384d960b75d58c3935d2b7b46d93e87b diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/LocalRelation.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/LocalRelation.java index 0a193d6c1..3fbeef755 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/LocalRelation.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/LocalRelation.java @@ -7,8 +7,7 @@ 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; @@ -39,7 +38,7 @@ public class LocalRelation extends AbstractRelation { 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() { @@ -74,8 +73,6 @@ public class LocalRelation extends AbstractRelation { 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, @@ -83,8 +80,8 @@ public class LocalRelation extends AbstractRelation { 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)) )); @@ -98,9 +95,8 @@ public class LocalRelation extends AbstractRelation { Variable row = new Variable("row", Types.tuple(parameterTypes)); for(int i=0;i>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]) ));