From 68907d05c3d3c170ddc6ec38b1b8ba49f8465064 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Mon, 28 Mar 2016 12:07:51 +0300 Subject: [PATCH] J2K produces unresolved 'toArray' calls for java Collection#toArray(T[]) #KT-11600 Fixed --- j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt | 5 +++++ j2k/testData/fileOrElement/toArray/toArray.java | 7 +++++-- j2k/testData/fileOrElement/toArray/toArray.kt | 6 ++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt index 98dab99a655..9727353aa25 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt @@ -41,6 +41,11 @@ enum class SpecialMethod(val qualifiedClassName: String?, val methodName: String = convertWithChangedName("toTypedArray", qualifier, arguments.notNull(), typeArgumentsConverted, codeConverter) }, + COLLECTION_TO_ARRAY_WITH_ARG(Collection::class.java.name, "toArray", 1) { + override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) + = convertWithChangedName("toTypedArray", qualifier, emptyList(), typeArgumentsConverted, codeConverter) + }, + MAP_SIZE(Map::class.java.name, "size", 0) { override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) = convertMethodCallToPropertyUse(codeConverter, qualifier) diff --git a/j2k/testData/fileOrElement/toArray/toArray.java b/j2k/testData/fileOrElement/toArray/toArray.java index 15dfe368d59..49214155ec8 100644 --- a/j2k/testData/fileOrElement/toArray/toArray.java +++ b/j2k/testData/fileOrElement/toArray/toArray.java @@ -1,7 +1,10 @@ import java.util.Arrays; +import java.util.List; public class Foo { - public Object[] m() { - return Arrays.asList("a", "b").toArray(); + public void test() { + List list = Arrays.asList("a", "b"); + Object[] array1 = list.toArray(); + Object[] array2 = list.toArray(new String[list.size()]); } } \ No newline at end of file diff --git a/j2k/testData/fileOrElement/toArray/toArray.kt b/j2k/testData/fileOrElement/toArray/toArray.kt index a6787609f5a..6bf4152f5c5 100644 --- a/j2k/testData/fileOrElement/toArray/toArray.kt +++ b/j2k/testData/fileOrElement/toArray/toArray.kt @@ -1,7 +1,9 @@ import java.util.Arrays class Foo { - fun m(): Array { - return Arrays.asList("a", "b").toTypedArray() + fun test() { + val list = Arrays.asList("a", "b") + val array1 = list.toTypedArray() + val array2 = list.toTypedArray() } } \ No newline at end of file