From 39a6b63f0a1579435acb7a4f7c0af0a6fe740072 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 7 Apr 2011 17:06:33 +0200 Subject: [PATCH] cast for value on stack --- idea/src/org/jetbrains/jet/codegen/StackValue.java | 1 + .../org/jetbrains/jet/codegen/NamespaceGenTest.java | 9 +++++++++ 2 files changed, 10 insertions(+) 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()); -- GitLab