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%2Ftop%2FExpressionEvaluator.java;h=d87beec65a7380361a2c45961fa41c2c886b8c18;hp=39f0ac721ee2a2bd32d366a9e17123e6c9ab6e74;hb=a8758de5bc19e5adb3f618d3038743a164f09912;hpb=12d9af17384d960b75d58c3935d2b7b46d93e87b diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/top/ExpressionEvaluator.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/top/ExpressionEvaluator.java index 39f0ac721..d87beec65 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/top/ExpressionEvaluator.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/top/ExpressionEvaluator.java @@ -8,6 +8,7 @@ import java.util.Map; import org.simantics.scl.compiler.common.names.Name; import org.simantics.scl.compiler.compilation.CodeGeneration; +import org.simantics.scl.compiler.compilation.CompilationContext; import org.simantics.scl.compiler.constants.JavaStaticMethod; import org.simantics.scl.compiler.constants.SCLConstant; import org.simantics.scl.compiler.elaboration.contexts.SimplificationContext; @@ -178,11 +179,13 @@ public class ExpressionEvaluator { public Object eval() throws SCLExpressionCompilationException { fillDefaults(); - final ErrorLog errorLog = new ErrorLog(); + final CompilationContext compilationContext = new CompilationContext(); + final ErrorLog errorLog = compilationContext.errorLog; final Environment environment = runtimeEnvironment.getEnvironment(); + compilationContext.environment = environment; // Parse expression - if(expressionText != null && !expressionText.trim().isEmpty()) { + if(expressionText != null) { try { switch(parseMode) { case BLOCK: { @@ -248,8 +251,7 @@ public class ExpressionEvaluator { // Elaboration { - TranslationContext context = new TranslationContext(errorLog, - environment, localEnvironment); + TranslationContext context = new TranslationContext(compilationContext, localEnvironment); expression = expression.resolve(context); if(!errorLog.isEmpty()) throw new SCLExpressionCompilationException(errorLog.getErrors()); @@ -265,7 +267,7 @@ public class ExpressionEvaluator { // Type checking { - TypingContext context = new TypingContext(errorLog, environment); + TypingContext context = new TypingContext(compilationContext); context.pushEffectUpperBound(expression.location, expectedEffect); expression = expression.checkType(context, expectedType); @@ -306,14 +308,15 @@ public class ExpressionEvaluator { MutableClassLoader classLoader = runtimeEnvironment.getMutableClassLoader(); String moduleName = classLoader.getFreshPackageName(); JavaTypeTranslator javaTypeTranslator = new JavaTypeTranslator(environment); + compilationContext.javaTypeTranslator = javaTypeTranslator; JavaNamingPolicy namingPolicy = new JavaNamingPolicy(moduleName); + compilationContext.namingPolicy = namingPolicy; ModuleBuilder moduleBuilder = new ModuleBuilder(namingPolicy, javaTypeTranslator); // Simplify SimplificationContext context = - new SimplificationContext(environment, errorLog, - javaTypeTranslator, DummyJavaReferenceValidator.INSTANCE); + new SimplificationContext(compilationContext, DummyJavaReferenceValidator.INSTANCE); expression = expression.simplify(context); if(!errorLog.isEmpty())