diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/ArrayGet.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/ArrayGet.java index 5128e182e80..c71453089d4 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/ArrayGet.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/ArrayGet.java @@ -39,10 +39,18 @@ public class ArrayGet extends IntrinsicMethod { List arguments, StackValue receiver ) { + int argumentIndex; + if (receiver == null || receiver == StackValue.none()) { + receiver = codegen.gen(arguments.get(0)); + argumentIndex = 1; + } else { + argumentIndex = 0; + } receiver.put(receiver.type, v); + Type type = correctElementType(receiver.type); - codegen.gen(arguments.get(0), Type.INT_TYPE); + codegen.gen(arguments.get(argumentIndex), Type.INT_TYPE); v.aload(type); diff --git a/compiler/testData/codegen/boxWithStdlib/arrays/kt4357.kt b/compiler/testData/codegen/boxWithStdlib/arrays/kt4357.kt new file mode 100644 index 00000000000..842701bf9f6 --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/arrays/kt4357.kt @@ -0,0 +1,8 @@ +fun box(): String { + val array = intArray(11, 12, 13) + val p = array get 0 + if (p != 11) return "fail 1: $p" + + val stringArray = array("OK", "FAIL") + return stringArray get 0 +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java index d3b714f32db..95e598e63a9 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java @@ -129,6 +129,12 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode doTestWithStdlib(fileName); } + @TestMetadata("kt4357.kt") + public void testKt4357() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/arrays/kt4357.kt"); + doTestWithStdlib(fileName); + } + } @TestMetadata("compiler/testData/codegen/boxWithStdlib/boxingOptimization")