From dc42be85434b988ddc68c86856d34d5d8a4cd641 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Tue, 1 Oct 2013 18:58:08 +0400 Subject: [PATCH] Fixed VerifyError when copyToArray() is immediately returned from method. --- .../jetbrains/jet/codegen/intrinsics/CopyToArray.java | 2 ++ .../codegen/boxWithStdlib/toArray/returnCopyToArray.kt | 10 ++++++++++ .../BlackBoxWithStdlibCodegenTestGenerated.java | 7 ++++++- 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/boxWithStdlib/toArray/returnCopyToArray.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/CopyToArray.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/CopyToArray.java index fb528c70794..dceb3edeb10 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/CopyToArray.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/CopyToArray.java @@ -31,6 +31,8 @@ public class CopyToArray implements IntrinsicMethod { v.newarray(expectedType.getElementType()); v.invokeinterface("java/util/Collection", "toArray", "([Ljava/lang/Object;)[Ljava/lang/Object;"); + StackValue.coerce(Type.getType("[Ljava/lang/Object;"), expectedType, v); + return StackValue.onStack(expectedType); } } diff --git a/compiler/testData/codegen/boxWithStdlib/toArray/returnCopyToArray.kt b/compiler/testData/codegen/boxWithStdlib/toArray/returnCopyToArray.kt new file mode 100644 index 00000000000..4061dd4bd9a --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/toArray/returnCopyToArray.kt @@ -0,0 +1,10 @@ +import java.util.Arrays + +fun getCopyToArray(): Array = Arrays.asList(2, 3, 9).copyToArray() + +fun box(): String { + val str = Arrays.toString(getCopyToArray()) + if (str != "[2, 3, 9]") return str + + return "OK" +} \ 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 d86abac4d31..7be82d0a42b 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java @@ -955,7 +955,12 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode public void testKt3177_copyToArray() throws Exception { doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/toArray/kt3177-copyToArray.kt"); } - + + @TestMetadata("returnCopyToArray.kt") + public void testReturnCopyToArray() throws Exception { + doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/toArray/returnCopyToArray.kt"); + } + } public static Test suite() {