diff --git a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt index 96d821aff42..98dab99a655 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt @@ -36,6 +36,11 @@ enum class SpecialMethod(val qualifiedClassName: String?, val methodName: String = convertMethodCallToPropertyUse(codeConverter, qualifier) }, + COLLECTION_TO_ARRAY(Collection::class.java.name, "toArray", 0) { + override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) + = convertWithChangedName("toTypedArray", qualifier, arguments.notNull(), 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 new file mode 100644 index 00000000000..15dfe368d59 --- /dev/null +++ b/j2k/testData/fileOrElement/toArray/toArray.java @@ -0,0 +1,7 @@ +import java.util.Arrays; + +public class Foo { + public Object[] m() { + return Arrays.asList("a", "b").toArray(); + } +} \ No newline at end of file diff --git a/j2k/testData/fileOrElement/toArray/toArray.kt b/j2k/testData/fileOrElement/toArray/toArray.kt new file mode 100644 index 00000000000..a6787609f5a --- /dev/null +++ b/j2k/testData/fileOrElement/toArray/toArray.kt @@ -0,0 +1,7 @@ +import java.util.Arrays + +class Foo { + fun m(): Array { + return Arrays.asList("a", "b").toTypedArray() + } +} \ No newline at end of file diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java index cbefc2d7565..5a13f0c4fbf 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java @@ -4232,6 +4232,21 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo } } + @TestMetadata("j2k/testData/fileOrElement/toArray") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class ToArray extends AbstractJavaToKotlinConverterForWebDemoTest { + public void testAllFilesPresentInToArray() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/toArray"), Pattern.compile("^(.+)\\.java$"), true); + } + + @TestMetadata("toArray.java") + public void testToArray() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/toArray/toArray.java"); + doTest(fileName); + } + } + @TestMetadata("j2k/testData/fileOrElement/toKotlinClasses") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java index 3484320269d..61f9ecde798 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java @@ -4232,6 +4232,21 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo } } + @TestMetadata("j2k/testData/fileOrElement/toArray") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class ToArray extends AbstractJavaToKotlinConverterSingleFileTest { + public void testAllFilesPresentInToArray() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/toArray"), Pattern.compile("^(.+)\\.java$"), true); + } + + @TestMetadata("toArray.java") + public void testToArray() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/toArray/toArray.java"); + doTest(fileName); + } + } + @TestMetadata("j2k/testData/fileOrElement/toKotlinClasses") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)