diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 76ddfef5633..ed8bc777477 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -229,6 +229,13 @@ public class ExpressionCodegen extends JetVisitor implem if (!(selector instanceof JetBlockExpression)) { markLineNumber(selector); } + if (selector instanceof JetExpression) { + JetExpression expression = (JetExpression) selector; + CompileTimeConstant constant = bindingContext.get(BindingContext.COMPILE_TIME_VALUE, expression); + if (constant != null) { + return StackValue.constant(constant.getValue(), expressionType(expression)); + } + } try { return selector.accept(visitor, receiver); } @@ -246,17 +253,7 @@ public class ExpressionCodegen extends JetVisitor implem public StackValue gen(JetElement expr) { StackValue tempVar = tempVariables.get(expr); - if (tempVar != null) { - return tempVar; - } - if (expr instanceof JetExpression) { - JetExpression expression = (JetExpression) expr; - CompileTimeConstant constant = bindingContext.get(BindingContext.COMPILE_TIME_VALUE, expression); - if (constant != null) { - return StackValue.constant(constant.getValue(), expressionType(expression)); - } - } - return genQualified(StackValue.none(), expr); + return tempVar != null ? tempVar : genQualified(StackValue.none(), expr); } public void gen(JetElement expr, Type type) { diff --git a/compiler/testData/lineNumber/custom/compileTimeConstant.kt b/compiler/testData/lineNumber/custom/compileTimeConstant.kt new file mode 100644 index 00000000000..02007f8cca1 --- /dev/null +++ b/compiler/testData/lineNumber/custom/compileTimeConstant.kt @@ -0,0 +1,6 @@ +fun foo() { + val x = + 42 +} + +// 3 diff --git a/compiler/tests/org/jetbrains/jet/codegen/LineNumberTest.java b/compiler/tests/org/jetbrains/jet/codegen/LineNumberTest.java index 013ec029621..eb1b837659e 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/LineNumberTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/LineNumberTest.java @@ -295,6 +295,10 @@ public class LineNumberTest extends TestCaseWithTmpdir { doTest(); } + public void testCompileTimeConstant() { + doTestCustom(); + } + public void testIfThen() { doTestCustom(); }