diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureProcessor.kt index 67ef5fe2d67..979ac96de30 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureProcessor.kt @@ -76,10 +76,14 @@ class KotlinChangeSignatureProcessor( override fun findUsages(): Array { val allUsages = ArrayList() + val javaUsages = mutableSetOf() ktChangeInfo.getOrCreateJavaChangeInfos()?.let { javaChangeInfos -> val javaProcessor = JavaChangeSignatureUsageProcessor() javaChangeInfos.mapTo(allUsages) { - KotlinWrapperForJavaUsageInfos(it, javaProcessor.findUsages(it), changeInfo.method) + val javaUsagesForKtChange = javaProcessor.findUsages(it) + val uniqueJavaUsagesForKtChange = javaUsagesForKtChange.filterNot { javaUsages.contains(it) } + javaUsages.addAll(javaUsagesForKtChange) + KotlinWrapperForJavaUsageInfos(it, uniqueJavaUsagesForKtChange.toTypedArray(), changeInfo.method) } } super.findUsages().filterTo(allUsages) { it is KotlinUsageInfo<*> || it is UnresolvableCollisionUsageInfo } diff --git a/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesAfter.1.kt b/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesAfter.1.kt new file mode 100644 index 00000000000..24234df90a9 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesAfter.1.kt @@ -0,0 +1,6 @@ +class Test { + companion object { + @JvmStatic + fun fooStatic(second: Int, first: String) { } + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesAfter.java b/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesAfter.java new file mode 100644 index 00000000000..8a15a74de0e --- /dev/null +++ b/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesAfter.java @@ -0,0 +1,6 @@ +public class JavaTest { + public static void test() { + Test.Companion.fooStatic(2, "First"); + Test.fooStatic(2, "First"); + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesBefore.1.kt b/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesBefore.1.kt new file mode 100644 index 00000000000..4cba15004f7 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesBefore.1.kt @@ -0,0 +1,6 @@ +class Test { + companion object { + @JvmStatic + fun fooStatic(first: String, second: Int) { } + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesBefore.java b/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesBefore.java new file mode 100644 index 00000000000..359d0b951be --- /dev/null +++ b/idea/testData/refactoring/changeSignature/JavaMethodJvmStaticKotlinUsagesBefore.java @@ -0,0 +1,6 @@ +public class JavaTest { + public static void test() { + Test.Companion.fooStatic("First", 2); + Test.fooStatic("First", 2); + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt index 5b633e90cd3..708e2e4a3db 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt @@ -563,6 +563,14 @@ class KotlinChangeSignatureTest : KotlinLightCodeInsightFixtureTestCase() { } } + fun testJavaMethodJvmStaticKotlinUsages() { + doJavaTest { + val first = newParameters[1] + newParameters[1] = newParameters[0] + newParameters[0] = first + } + } + fun testJavaConstructorKotlinUsages() { doJavaTest { newParameters.removeAt(1) } }