X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Ftop%2FExpressionEvaluator.java;h=f69395c3d74ca110ca043fcfc010d4730825fbf6;hb=63bb6d595c37b3a2fb55e07fb810779cae3b4d03;hp=36994d136533435522642855fdf5a8817203fd57;hpb=eae2657463e387cb764e7e5780d5c56f5311c0af;p=simantics%2Fplatform.git 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 36994d136..f69395c3d 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 @@ -47,6 +47,7 @@ import org.simantics.scl.compiler.internal.parsing.exceptions.SCLSyntaxErrorExce import org.simantics.scl.compiler.internal.parsing.parser.SCLBlockParser; import org.simantics.scl.compiler.internal.parsing.parser.SCLParserImpl; import org.simantics.scl.compiler.internal.parsing.parser.SCLParserOptions; +import org.simantics.scl.compiler.internal.parsing.utils.LineLocators; import org.simantics.scl.compiler.runtime.MutableClassLoader; import org.simantics.scl.compiler.runtime.RuntimeEnvironment; import org.simantics.scl.compiler.types.TVar; @@ -75,7 +76,7 @@ public class ExpressionEvaluator { private Type expectedType; private LocalEnvironment localEnvironment; private LocalStorage localStorage; - private boolean interpretIfPossible = true; + private boolean interpretIfPossible = false; private ExpressionParseMode parseMode = ExpressionParseMode.EXPRESSION; private boolean validateOnly; @@ -202,6 +203,7 @@ public class ExpressionEvaluator { // Parse expression if(expressionText != null) { + compilationContext.lineLocator = LineLocators.createLineLocator(expressionText); try { switch(parseMode) { case BLOCK: { @@ -230,6 +232,8 @@ public class ExpressionEvaluator { throw new SCLExpressionCompilationException(errorLog.getErrors()); } } + else + compilationContext.lineLocator = LineLocators.DUMMY_LOCATOR; // Store local variables ArrayList lvTypes = new ArrayList(); @@ -364,7 +368,7 @@ public class ExpressionEvaluator { } // Convert to SSA - ModuleWriter mw = new ModuleWriter(namingPolicy.getModuleClassName()); + ModuleWriter mw = new ModuleWriter(namingPolicy.getModuleClassName(), compilationContext.lineLocator); DecomposedExpression decomposed = DecomposedExpression.decompose(errorLog, expression); @@ -387,9 +391,10 @@ public class ExpressionEvaluator { IVal[] parameterVals = w.getParameters(); for(int i=0;i