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%2FTransitiveClosureRelation.java;h=42eb9530d3717401b427b78f7c951c99620f8675;hp=c9fa469d28f748fbea80fdfbd623399118437466;hb=a8758de5bc19e5adb3f618d3038743a164f09912;hpb=591f4572f18d20a08a797a8e5c4a8dfc1b3320c1 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/TransitiveClosureRelation.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/TransitiveClosureRelation.java index c9fa469d2..42eb9530d 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/TransitiveClosureRelation.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/TransitiveClosureRelation.java @@ -9,6 +9,7 @@ import static org.simantics.scl.compiler.elaboration.expressions.Expressions.tup import static org.simantics.scl.compiler.elaboration.expressions.Expressions.var; import org.simantics.scl.compiler.common.names.Name; +import org.simantics.scl.compiler.common.names.Names; import org.simantics.scl.compiler.elaboration.expressions.EApply; import org.simantics.scl.compiler.elaboration.expressions.EVariable; import org.simantics.scl.compiler.elaboration.expressions.Expression; @@ -67,9 +68,13 @@ public class TransitiveClosureRelation extends AbstractRelation implements Compo type = type.replace(getTypeVariables(), typeParameters); Expression continuation = context.getContinuation(); + System.out.println("continuation = " + continuation + " :: " + continuation.getType()); Variable set = new Variable("set", Types.apply(Types.con("MSet", "T"), type)); Variable f = new Variable("f", Types.functionE(type, Types.PROC, continuation.getType())); Variable innerSolved = new Variable("tcTemp", solved.getType()); + System.out.println("set :: " + set.getType()); + System.out.println("f :: " + f.getType()); + System.out.println("tcTemp :: " + innerSolved.getType()); QueryCompilationContext newContext = context.createSubcontext(new EApply( new EVariable(f), new EVariable(innerSolved) @@ -91,14 +96,14 @@ public class TransitiveClosureRelation extends AbstractRelation implements Compo innerParameters, boundVariables); continuation = context.disjunction(continuation, newContext.getContinuation()); - continuation = if_(apply(context, Types.PROC, Name.create("MSet", "add"), type, + continuation = if_(apply(context.getCompilationContext(), Types.PROC, Names.MSet_add, type, var(set), var(solved)), continuation, context.failure()); continuation = lambda(Types.PROC, solved, continuation); continuation = letRec(f, continuation, apply(var(f), var(bound))); continuation = let(set, - apply(context, Types.PROC, Name.create("MSet", "create"), type, tuple()), + apply(context.getCompilationContext(), Types.PROC, Names.MSet_create, type, tuple()), continuation); context.setContinuation(continuation);