X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2FERuleset.java;h=9e863a7a6e1f42fe3eccfee067593d547a3c1a5e;hb=a8758de5bc19e5adb3f618d3038743a164f09912;hp=02b8c9ddc0c4922765cbbf5ff321726e4d05ff86;hpb=3303fe4a3b363e88662ac75a4f7e873ddb3ab352;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/ERuleset.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/ERuleset.java index 02b8c9ddc..9e863a7a6 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/ERuleset.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/ERuleset.java @@ -21,7 +21,7 @@ import java.util.ArrayList; import java.util.Set; import org.simantics.scl.compiler.common.exceptions.InternalCompilerError; -import org.simantics.scl.compiler.common.names.Name; +import org.simantics.scl.compiler.common.names.Names; import org.simantics.scl.compiler.elaboration.contexts.TranslationContext; import org.simantics.scl.compiler.elaboration.contexts.TypingContext; import org.simantics.scl.compiler.elaboration.expressions.printing.ExpressionToStringVisitor; @@ -36,7 +36,6 @@ import org.simantics.scl.compiler.internal.elaboration.utils.ExpressionDecorator import org.simantics.scl.compiler.internal.elaboration.utils.ForcedClosure; import org.simantics.scl.compiler.internal.elaboration.utils.StronglyConnectedComponents; import org.simantics.scl.compiler.top.SCLCompilerConfiguration; -import org.simantics.scl.compiler.types.TCon; import org.simantics.scl.compiler.types.Type; import org.simantics.scl.compiler.types.Types; import org.simantics.scl.compiler.types.exceptions.MatchException; @@ -191,15 +190,6 @@ public class ERuleset extends SimplifiableExpression { Variable handleFunc; } - public static final TCon MSet = Types.con("MSet", "T"); - private static final Name MSet_add = Name.create("MSet", "add"); - private static final Name MSet_create = Name.create("MSet", "create"); - - private static final TCon MList = Types.con("MList", "T"); - private static final Name MList_add = Name.create("MList", "add"); - private static final Name MList_create = Name.create("MList", "create"); - private static final Name MList_removeLast = Name.create("MList", "removeLast"); - public Expression compile(TypingContext context) { // Create a map from relations to their ids TObjectIntHashMap relationsToIds = new TObjectIntHashMap(relations.length, @@ -284,7 +274,7 @@ public class ERuleset extends SimplifiableExpression { LocalRelation relation = relations[i]; Type[] parameterTypes = relation.getParameterTypes(); stacks[i] = newVar("stack" + relation.getName(), - Types.apply(MList, Types.tuple(parameterTypes)) + Types.apply(Names.MList_T, Types.tuple(parameterTypes)) ); } @@ -305,7 +295,7 @@ public class ERuleset extends SimplifiableExpression { ArrayList seedExpressions = new ArrayList(); for(DatalogRule rule : rules) { int id = diffables.get(rule.headRelation).id; - Expression appendExp = apply(context, Types.PROC, MList_add, Types.tuple(rule.headRelation.getParameterTypes()), + Expression appendExp = apply(context.getCompilationContext(), Types.PROC, Names.MList_add, Types.tuple(rule.headRelation.getParameterTypes()), var(stacks[id]), tuple(rule.headParameters) ); @@ -349,7 +339,7 @@ public class ERuleset extends SimplifiableExpression { for(Expression updateExpression : updateExpressions[i]) handleRow = seq(updateExpression, handleRow); handleRow = if_( - apply(context, Types.PROC, MSet_add, rowType, + apply(context.getCompilationContext(), Types.PROC, Names.MSet_add, rowType, var(relation.table), var(row)), handleRow, tuple() @@ -361,7 +351,7 @@ public class ERuleset extends SimplifiableExpression { apply(Types.PROC, var(loops[(i+1)%relations.length]), addInteger(var(counter), integer(-1))) ); Expression body = matchWithDefault( - apply(context, Types.PROC, MList_removeLast, rowType, var(stacks[i])), + apply(context.getCompilationContext(), Types.PROC, Names.MList_removeLast, rowType, var(stacks[i])), Just(as(row, tuple(vars(parameters)))), handleRow, failure); @@ -376,7 +366,7 @@ public class ERuleset extends SimplifiableExpression { // Create stacks for(int i=0;i