From b7e6de73e800e82e3423a168db7893bd6ffd2cc7 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 17 Jun 2011 17:01:30 +0200 Subject: [PATCH] putting a compare on stack as void type is a nop, not an error --- idea/src/org/jetbrains/jet/codegen/StackValue.java | 5 ++++- idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/jet/codegen/StackValue.java b/idea/src/org/jetbrains/jet/codegen/StackValue.java index 6dbbe94b8a9..fedaefa0760 100644 --- a/idea/src/org/jetbrains/jet/codegen/StackValue.java +++ b/idea/src/org/jetbrains/jet/codegen/StackValue.java @@ -235,8 +235,11 @@ public abstract class StackValue { @Override public void put(Type type, InstructionAdapter v) { + if (type == Type.VOID_TYPE) { + return; + } if (type != Type.BOOLEAN_TYPE) { - throw new UnsupportedOperationException("don't know how to put a compare as a non-boolean type"); + throw new UnsupportedOperationException("don't know how to put a compare as a non-boolean type " + type); } putAsBoolean(v); } diff --git a/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java b/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java index dc2c1eb6c32..6b4d827967f 100644 --- a/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java +++ b/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java @@ -408,4 +408,10 @@ public class NamespaceGenTest extends CodegenTestCase { public void testCheckCast() throws Exception { blackBoxFile("checkCast.jet"); } + + public void testPutBooleanAsVoid() throws Exception { + loadText("class C(val x: Int) { { x > 0 } } fun box() { val c = C(0) } "); + final Method main = generateFunction(); + main.invoke(null); // must not fail + } }