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%2FTransformationBuilder.java;h=6060315c4d3103f34933dc9e6fcee61ab2ea7233;hp=dcb212488972f04954a6e9e13b05e734894040ea;hb=cb5fc8d606d8b322563e9345c441eecfa7f01753;hpb=eecd74faded034bd067094b42bbac0d286d8d9fa diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/TransformationBuilder.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/TransformationBuilder.java index dcb212488..6060315c4 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/TransformationBuilder.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/TransformationBuilder.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -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.elaboration.contexts.EnvironmentalContext; import org.simantics.scl.compiler.elaboration.contexts.TypingContext; @@ -33,7 +33,6 @@ import org.simantics.scl.compiler.errors.Locations; import org.simantics.scl.compiler.internal.codegen.references.IVal; import org.simantics.scl.compiler.internal.elaboration.utils.ForcedClosure; 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; @@ -43,12 +42,6 @@ import gnu.trove.map.hash.TObjectIntHashMap; import gnu.trove.set.hash.THashSet; public class TransformationBuilder { - private static final TCon UMap = Types.con("Unification", "UMap"); - private static final Name createUMap = Name.create("Unification", "createUMap"); - - private static final TCon Unifiable = Types.con("Unification", "Unifiable"); - private static final Name uVar = Name.create("Unification", "uVar"); - private final ErrorLog errorLog; private final TypingContext context; private final UnifiableFactory unifiableFactory; @@ -80,11 +73,11 @@ public class TransformationBuilder { mappingRelation.parameterTypes[0] }); mapping.umap = new Variable("map_" + mappingRelation.name.name, - Types.apply(UMap, mappingRelation.parameterTypes) + Types.apply(Names.Unifiable_UMap, mappingRelation.parameterTypes) ); mappings.put(mappingRelation, mapping); mappingStatements.add(new LetStatement(new EVariable(mapping.umap), - Expressions.apply(context, Types.PROC, createUMap, + Expressions.apply(context.getCompilationContext(), Types.PROC, Names.Unifiable_createUMap, mappingRelation.parameterTypes[0], mappingRelation.parameterTypes[1], Expressions.punit()))); @@ -252,10 +245,10 @@ public class TransformationBuilder { int count = mappedVariableUseCount.get(variable); if(count > 1) { Variable uniVariable = new Variable("uvar_" + variable.getName(), - Types.apply(Unifiable, variable.getType())); + Types.apply(Names.Unifiable_Unifiable, variable.getType())); phase2Actions.add(new LetStatement(new EVariable(uniVariable), - Expressions.apply(context, Types.PROC, - uVar, + Expressions.apply(context.getCompilationContext(), Types.PROC, + Names.Unifiable_uVar, variable.getType(), Expressions.tuple()))); uniVariableMap.put(variable, uniVariable); @@ -298,7 +291,7 @@ public class TransformationBuilder { new QAtom(decomposed.ruleMatchingRelation, Type.EMPTY_ARRAY, Expressions.vars(sourceVariables)), - statementsToExpression(context, phase2Actions), + statementsToExpression(context.getCompilationContext(), phase2Actions), sourceVariables).compile(context))); // Enforcing statement @@ -314,7 +307,7 @@ public class TransformationBuilder { for(int phase : phases.keys()) { ArrayList targetQuery = phases.get(phase); Expression enforcing = new EEnforce(new QConjunction(targetQuery.toArray(new Query[targetQuery.size()]))).compile(context); - enforcing = statementsToExpression(context, phase3Actions, enforcing); + enforcing = statementsToExpression(context.getCompilationContext(), phase3Actions, enforcing); enforcing = new EWhen( rule.location, new QAtom(decomposed.ruleMatchingRelation, @@ -349,8 +342,8 @@ public class TransformationBuilder { for(int phase : phases) allEnforcingStatements.addAll(enforcingStatements.get(phase)); } - Expression expression = statementsToExpression(context, allEnforcingStatements); - expression = statementsToExpression(context, mappingStatements, expression); + Expression expression = statementsToExpression(context.getCompilationContext(), allEnforcingStatements); + expression = statementsToExpression(context.getCompilationContext(), mappingStatements, expression); // Matching Expression result = new ERuleset(