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%2Finternal%2Felaboration%2Ftransformations%2FUnifiableFactory.java;h=75b083f0c9fbadc3a138e77b0b8a7a65b613bed4;hp=7b3face61c962d3b89dbe54c4c0361914762d311;hb=a8758de5bc19e5adb3f618d3038743a164f09912;hpb=12d9af17384d960b75d58c3935d2b7b46d93e87b diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/UnifiableFactory.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/UnifiableFactory.java index 7b3face61..75b083f0c 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/UnifiableFactory.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/UnifiableFactory.java @@ -3,7 +3,7 @@ package org.simantics.scl.compiler.internal.elaboration.transformations; import java.util.ArrayList; 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.constants.Constant; import org.simantics.scl.compiler.constants.StringConstant; import org.simantics.scl.compiler.elaboration.contexts.TypingContext; @@ -34,26 +34,6 @@ import gnu.trove.map.hash.THashMap; import gnu.trove.set.hash.THashSet; public class UnifiableFactory { - private static final TCon Unifiable = Types.con("Unification", "Unifiable"); - private static final Name uVar = Name.create("Unification", "uVar"); - private static final Name uCons = Name.create("Unification", "uCons"); - private static final Name uId = Name.create("Unification", "uId"); - private static final Name uPending = Name.create("Unification", "uPending"); - private static final TCon UTag = Types.con("Unification", "UTag"); - private static final Name uTag = Name.create("Unification", "uTag"); - private static final Name extractWithDefault = Name.create("Unification", "extractWithDefault"); - - private static final Name putUMap = Name.create("Unification", "putUMap"); - private static final Name putUMapC = Name.create("Unification", "putUMapC"); - private static final Name getUMapWithDefault = Name.create("Unification", "getUMapWithDefault"); - - private static final Name fail = Name.create("Builtin", "fail"); - private static final Name unsafeCoerce = Name.create("JavaBuiltin", "unsafeCoerce"); - private static final Name newResource = Name.create("Simantics/DB", "newResource"); - private static final Name createElement = Name.create("Data/XML", "createElement"); - - private static final Type XML_ELEMENT = Types.con("Data/XML", "Element"); - private final TypingContext context; /** * The factory generates here the statements initializing the variables needed in unification. @@ -93,7 +73,7 @@ public class UnifiableFactory { } @Override public Expression toExpression() { - return Expressions.apply(context, Types.NO_EFFECTS, uId, + return Expressions.apply(context.getCompilationContext(), Types.NO_EFFECTS, Names.Unifiable_uId, constant.getType(), constant); } } @@ -116,7 +96,7 @@ public class UnifiableFactory { variable, extract(variable.getType(), Expressions.var(uniVariableMap.get(variable))), expression); - return Expressions.apply(context, Types.NO_EFFECTS, uPending, + return Expressions.apply(context.getCompilationContext(), Types.NO_EFFECTS, Names.Unifiable_uPending, value.getType(), Expressions.computation(Types.PROC, expression)); } } @@ -148,7 +128,7 @@ public class UnifiableFactory { if(uniVariable != null) return new UniRep(new EVariable(uniVariable)); else - return new UniRep(Expressions.apply(context, Types.PROC, uVar, variable.getType(), Expressions.punit())); + return new UniRep(Expressions.apply(context.getCompilationContext(), Types.PROC, Names.Unifiable_uVar, variable.getType(), Expressions.punit())); } apply: if(expression instanceof EApply) { @@ -189,7 +169,7 @@ public class UnifiableFactory { for(int i=0;i variableSet, THashMap uniVariableMap, Expression umap, Expression key, Expression value) { - return Expressions.apply(context, Types.PROC, - putUMap, + return Expressions.apply(context.getCompilationContext(), Types.PROC, + Names.Unifiable_putUMap, key.getType(), value.getType(), umap, @@ -400,8 +380,8 @@ public class UnifiableFactory { } public Expression putToUMapConstant(Variable umap, Expression key, Expression value) { - return Expressions.apply(context, Types.PROC, - putUMapC, + return Expressions.apply(context.getCompilationContext(), Types.PROC, + Names.Unifiable_putUMapC, key.getType(), value.getType(), Expressions.var(umap), key, value);