From e1cecd10b276b986bc4936aae580832c98771758 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Sat, 2 Jun 2012 23:05:09 +0200 Subject: [PATCH] allow putting an Invert operation on stack as a void type (KT-1634) --- .../backend/src/org/jetbrains/jet/codegen/StackValue.java | 4 ++++ compiler/testData/codegen/regressions/kt1634.kt | 4 ++++ .../tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java | 4 ++++ 3 files changed, 12 insertions(+) create mode 100644 compiler/testData/codegen/regressions/kt1634.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java index 5138d5dc855..f90cce4b06f 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java @@ -511,6 +511,10 @@ public abstract class StackValue { @Override public void put(Type type, InstructionAdapter v) { + if (type == Type.VOID_TYPE) { + myOperand.put(type, v); // the operand will remove itself from the stack if needed + return; + } if (type != Type.BOOLEAN_TYPE) { throw new UnsupportedOperationException("don't know how to put a compare as a non-boolean type"); } diff --git a/compiler/testData/codegen/regressions/kt1634.kt b/compiler/testData/codegen/regressions/kt1634.kt new file mode 100644 index 00000000000..8cdc1a36907 --- /dev/null +++ b/compiler/testData/codegen/regressions/kt1634.kt @@ -0,0 +1,4 @@ +fun box(): String { + !true + return "OK" +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java b/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java index 87b58b2674b..50700c26205 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java @@ -432,4 +432,8 @@ public class PrimitiveTypesTest extends CodegenTestCase { public void testKt1508 () { blackBoxFile("regressions/kt1508.kt"); } + + public void testKt1634() { + blackBoxFile("regressions/kt1634.kt"); + } }