From b7542ecc4e943cf69645deedacd89c5445a1a18c Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Mon, 12 Sep 2011 18:01:39 +0300 Subject: [PATCH] fix for KT-299 --- .../jet/codegen/ExpressionCodegen.java | 4 ++-- idea/testData/codegen/regressions/kt299.jet | 17 +++++++++++++++++ .../jet/codegen/ControlStructuresTest.java | 4 ++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 idea/testData/codegen/regressions/kt299.jet diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index df479228c83..f47fdb9b385 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -1196,10 +1196,10 @@ public class ExpressionCodegen extends JetVisitor { getInIntRange(leftValue, rangeExpression, inverted); } else { - leftValue.put(JetTypeMapper.TYPE_OBJECT, v); + FunctionDescriptor op = (FunctionDescriptor) bindingContext.get(BindingContext.REFERENCE_TARGET, expression.getOperationReference()); + leftValue.put(typeMapper.mapType(op.getValueParameters().get(0).getOutType()), v); genToJVMStack(expression.getRight()); v.swap(); - FunctionDescriptor op = (FunctionDescriptor) bindingContext.get(BindingContext.REFERENCE_TARGET, expression.getOperationReference()); invokeFunctionNoParams(op, Type.BOOLEAN_TYPE, v); } return StackValue.onStack(Type.BOOLEAN_TYPE); diff --git a/idea/testData/codegen/regressions/kt299.jet b/idea/testData/codegen/regressions/kt299.jet new file mode 100644 index 00000000000..4aa31a44dc8 --- /dev/null +++ b/idea/testData/codegen/regressions/kt299.jet @@ -0,0 +1,17 @@ +class MyRange1() : Range { + override fun contains(item: Int) = true +} + +class MyRange2() { + fun contains(item: Int) = true +} + +fun box(): String { + if (1 in MyRange1()) { + if (1 in MyRange2()) { + return "OK" + } + return "fail 2" + } + return "fail 1" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/codegen/ControlStructuresTest.java b/idea/tests/org/jetbrains/jet/codegen/ControlStructuresTest.java index 47abe0a954c..2e93fc8b561 100644 --- a/idea/tests/org/jetbrains/jet/codegen/ControlStructuresTest.java +++ b/idea/tests/org/jetbrains/jet/codegen/ControlStructuresTest.java @@ -177,4 +177,8 @@ public class ControlStructuresTest extends CodegenTestCase { assertEquals(true, main.invoke(null, null, "lala")); assertEquals(false, main.invoke(null, "papa", "papa")); } + + public void testKt299() throws Exception { + blackBoxFile("regressions/kt299.jet"); + } }