]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/TransitiveClosureRelation.java
Merged changes from feature/scl to master.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / relations / TransitiveClosureRelation.java
index c9fa469d28f748fbea80fdfbd623399118437466..42eb9530d3717401b427b78f7c951c99620f8675 100644 (file)
@@ -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);