From 24caca1882e36bfb654955e6bbedcdfadd00db06 Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Mon, 8 Jul 2019 14:29:49 +0300 Subject: [PATCH] ReplaceJavaStaticMethodWithKotlinAnalogInspection: fix false positive for 'Arrays.copyOf' #KT-32477 --- .../ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt | 4 +++- .../collections/notCopyOf.kt | 8 ++++++++ .../idea/inspections/LocalInspectionTestGenerated.java | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 idea/testData/inspectionsLocal/replaceJavaStaticMethodWithKotlinAnalog/collections/notCopyOf.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt index 476205b2a00..d0779f84758 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt @@ -168,7 +168,9 @@ class ReplaceJavaStaticMethodWithKotlinAnalogInspection : AbstractKotlinInspecti ) private val JAVA_COLLECTIONS = listOf( - Replacement("java.util.Arrays.copyOf", "kotlin.collections.copyOf", toExtensionFunction = true), + Replacement("java.util.Arrays.copyOf", "kotlin.collections.copyOf", toExtensionFunction = true) { + it.valueArguments.size == 2 + }, Replacement("java.util.Arrays.asList", "kotlin.collections.listOf"), Replacement("java.util.Arrays.asList", "kotlin.collections.mutableListOf"), Replacement("java.util.Set.of", "kotlin.collections.setOf"), diff --git a/idea/testData/inspectionsLocal/replaceJavaStaticMethodWithKotlinAnalog/collections/notCopyOf.kt b/idea/testData/inspectionsLocal/replaceJavaStaticMethodWithKotlinAnalog/collections/notCopyOf.kt new file mode 100644 index 00000000000..365bfd490a7 --- /dev/null +++ b/idea/testData/inspectionsLocal/replaceJavaStaticMethodWithKotlinAnalog/collections/notCopyOf.kt @@ -0,0 +1,8 @@ +// WITH_RUNTIME +// PROBLEM: none +import java.util.Arrays + +fun test() { + val array = arrayOf(1, 2, 3) + val result = Arrays.copyOf(array, 3, Array::class.java) +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 95bc72af4b2..eb6dc3f0706 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -9081,6 +9081,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/replaceJavaStaticMethodWithKotlinAnalog/collections/nonArraysCopyOf.kt"); } + @TestMetadata("notCopyOf.kt") + public void testNotCopyOf() throws Exception { + runTest("idea/testData/inspectionsLocal/replaceJavaStaticMethodWithKotlinAnalog/collections/notCopyOf.kt"); + } + @TestMetadata("qualified.kt") public void testQualified() throws Exception { runTest("idea/testData/inspectionsLocal/replaceJavaStaticMethodWithKotlinAnalog/collections/qualified.kt");