diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/PropertyOfProgressionOrRange.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/PropertyOfProgressionOrRange.java index b6a6519582f..ecdfd2bbf63 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/PropertyOfProgressionOrRange.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/PropertyOfProgressionOrRange.java @@ -56,7 +56,7 @@ public class PropertyOfProgressionOrRange implements IntrinsicMethod { JvmClassName wrapperClass = JvmPrimitiveType.getByAsmType(expectedType).getWrapper(); String getterName = PropertyCodegen.getterName(propertyName); - receiver.put(AsmTypeConstants.OBJECT_TYPE, v); + receiver.put(receiver.type, v); v.invokevirtual(ownerInternalName, getterName, "()" + wrapperClass.getDescriptor()); StackValue.coerce(wrapperClass.getAsmType(), expectedType, v); return StackValue.onStack(expectedType); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StringGetChar.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StringGetChar.java index 82295191054..11bdefea5a9 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StringGetChar.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StringGetChar.java @@ -40,7 +40,7 @@ public class StringGetChar implements IntrinsicMethod { @NotNull GenerationState state ) { if (receiver != null) { - receiver.put(AsmTypeConstants.OBJECT_TYPE, v); + receiver.put(receiver.type, v); } if (arguments != null) { codegen.gen(arguments.get(0)).put(Type.INT_TYPE, v); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StringLength.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StringLength.java index 001692ef891..a7cd15accfc 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StringLength.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StringLength.java @@ -39,7 +39,7 @@ public class StringLength implements IntrinsicMethod { StackValue receiver, @NotNull GenerationState state ) { - receiver.put(AsmTypeConstants.OBJECT_TYPE, v); + receiver.put(receiver.type, v); v.invokeinterface("java/lang/CharSequence", "length", "()I"); return StackValue.onStack(Type.INT_TYPE); } diff --git a/compiler/testData/codegen/box/intrinsics/rangeFromCollection.kt b/compiler/testData/codegen/box/intrinsics/rangeFromCollection.kt new file mode 100644 index 00000000000..1129a64b623 --- /dev/null +++ b/compiler/testData/codegen/box/intrinsics/rangeFromCollection.kt @@ -0,0 +1,6 @@ +fun box(): String { + val list = java.util.ArrayList() + list.add(1..3) + list[0].start + return "OK" +} diff --git a/compiler/testData/codegen/box/intrinsics/stringFromCollection.kt b/compiler/testData/codegen/box/intrinsics/stringFromCollection.kt new file mode 100644 index 00000000000..daacb2d0131 --- /dev/null +++ b/compiler/testData/codegen/box/intrinsics/stringFromCollection.kt @@ -0,0 +1,7 @@ +fun box(): String { + val list = java.util.ArrayList() + list.add("0") + list[0][0] + list[0].length + return "OK" +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index a11f85b39c7..a94facdcef2 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -2455,6 +2455,16 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest("compiler/testData/codegen/box/intrinsics/longRangeWithExplicitDot.kt"); } + @TestMetadata("rangeFromCollection.kt") + public void testRangeFromCollection() throws Exception { + doTest("compiler/testData/codegen/box/intrinsics/rangeFromCollection.kt"); + } + + @TestMetadata("stringFromCollection.kt") + public void testStringFromCollection() throws Exception { + doTest("compiler/testData/codegen/box/intrinsics/stringFromCollection.kt"); + } + @TestMetadata("tostring.kt") public void testTostring() throws Exception { doTest("compiler/testData/codegen/box/intrinsics/tostring.kt");