fix for KT-299
This commit is contained in:
@@ -1196,10 +1196,10 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
|
|||||||
getInIntRange(leftValue, rangeExpression, inverted);
|
getInIntRange(leftValue, rangeExpression, inverted);
|
||||||
}
|
}
|
||||||
else {
|
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());
|
genToJVMStack(expression.getRight());
|
||||||
v.swap();
|
v.swap();
|
||||||
FunctionDescriptor op = (FunctionDescriptor) bindingContext.get(BindingContext.REFERENCE_TARGET, expression.getOperationReference());
|
|
||||||
invokeFunctionNoParams(op, Type.BOOLEAN_TYPE, v);
|
invokeFunctionNoParams(op, Type.BOOLEAN_TYPE, v);
|
||||||
}
|
}
|
||||||
return StackValue.onStack(Type.BOOLEAN_TYPE);
|
return StackValue.onStack(Type.BOOLEAN_TYPE);
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
class MyRange1() : Range<Int> {
|
||||||
|
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"
|
||||||
|
}
|
||||||
@@ -177,4 +177,8 @@ public class ControlStructuresTest extends CodegenTestCase {
|
|||||||
assertEquals(true, main.invoke(null, null, "lala"));
|
assertEquals(true, main.invoke(null, null, "lala"));
|
||||||
assertEquals(false, main.invoke(null, "papa", "papa"));
|
assertEquals(false, main.invoke(null, "papa", "papa"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testKt299() throws Exception {
|
||||||
|
blackBoxFile("regressions/kt299.jet");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user