From 5dff5bded90821827773807d7a78cd1dc8e62d35 Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Tue, 6 Dec 2011 13:29:28 +0200 Subject: [PATCH] KT-757 wrong inv() for long --- .../src/org/jetbrains/jet/codegen/intrinsics/Inv.java | 8 +++++++- compiler/testData/codegen/regressions/kt757.jet | 9 +++++++++ .../org/jetbrains/jet/codegen/PrimitiveTypesTest.java | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/regressions/kt757.jet diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/Inv.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/Inv.java index fd6a663f964..89d757c88ef 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/Inv.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/Inv.java @@ -11,12 +11,18 @@ import java.util.List; /** * @author yole + * @author alex.tkachman */ public class Inv implements IntrinsicMethod { @Override public StackValue generate(ExpressionCodegen codegen, InstructionAdapter v, Type expectedType, PsiElement element, List arguments, StackValue receiver) { receiver.put(expectedType, v); - v.iconst(-1); + if(expectedType == Type.LONG_TYPE) { + v.lconst(-1L); + } + else { + v.iconst(-1); + } v.xor(expectedType); return StackValue.onStack(expectedType); } diff --git a/compiler/testData/codegen/regressions/kt757.jet b/compiler/testData/codegen/regressions/kt757.jet new file mode 100644 index 00000000000..8ddfb3d879a --- /dev/null +++ b/compiler/testData/codegen/regressions/kt757.jet @@ -0,0 +1,9 @@ +namespace demo_long + +fun Long?.inv() : Long = this.sure().inv() + +fun box() : String { + val x : Long? = 10 + System.out?.println(x.inv()) + return if(x.inv() == -11.lng) "OK" else "fail" +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java b/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java index b11121da4e6..c5616a811a0 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java @@ -350,6 +350,11 @@ public class PrimitiveTypesTest extends CodegenTestCase { public void testKt684 () { blackBoxFile("regressions/kt684.jet"); +// System.out.println(generateToText()); + } + + public void testKt757 () { + blackBoxFile("regressions/kt757.jet"); // System.out.println(generateToText()); } }