diff --git a/idea/src/org/jetbrains/jet/codegen/StackValue.java b/idea/src/org/jetbrains/jet/codegen/StackValue.java index f2bafda7e6b..c75d9cdfd74 100644 --- a/idea/src/org/jetbrains/jet/codegen/StackValue.java +++ b/idea/src/org/jetbrains/jet/codegen/StackValue.java @@ -108,6 +108,7 @@ public abstract class StackValue { @Override public void put(Type type, InstructionAdapter v) { + coerce(type, v); } @Override diff --git a/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java b/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java index 46a3de975e2..5c15db78711 100644 --- a/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java +++ b/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java @@ -327,6 +327,15 @@ public class NamespaceGenTest extends LightCodeInsightFixtureTestCase { assertEquals(1.0, main.invoke(null)); } + public void testCastOnStack() throws Exception { + loadText("fun foo(): Double = System.currentTimeMillis().dbl"); + final Method main = generateFunction(); + double currentTimeMillis = (double) System.currentTimeMillis(); + double result = (Double) main.invoke(null); + double delta = Math.abs(currentTimeMillis - result); + assertTrue(delta <= 1.0); + } + private void binOpTest(final String text, final Object arg1, final Object arg2, final Object expected) throws Exception { loadText(text); System.out.println(generateToText());