Change signature does not make doubled refactoring for java usages

Fixed #KT-22170
This commit is contained in:
Igor Yakovlev
2020-06-30 14:58:19 +03:00
parent 7b9fad00a1
commit 4707f4fc3f
6 changed files with 37 additions and 1 deletions
@@ -76,10 +76,14 @@ class KotlinChangeSignatureProcessor(
override fun findUsages(): Array<UsageInfo> {
val allUsages = ArrayList<UsageInfo>()
val javaUsages = mutableSetOf<UsageInfo>()
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<UsageInfo> { javaUsages.contains(it) }
javaUsages.addAll(javaUsagesForKtChange)
KotlinWrapperForJavaUsageInfos(it, uniqueJavaUsagesForKtChange.toTypedArray(), changeInfo.method)
}
}
super.findUsages().filterTo(allUsages) { it is KotlinUsageInfo<*> || it is UnresolvableCollisionUsageInfo }
@@ -0,0 +1,6 @@
class Test {
companion object {
@JvmStatic
fun fooStatic(second: Int, first: String) { }
}
}
@@ -0,0 +1,6 @@
public class JavaTest {
public static void test() {
Test.Companion.fooStatic(2, "First");
Test.fooStatic(2, "First");
}
}
@@ -0,0 +1,6 @@
class Test {
companion object {
@JvmStatic
fun fooStatic(first: String, second: Int) { }
}
}
@@ -0,0 +1,6 @@
public class JavaTest {
public static void test() {
Test.Companion.<caret>fooStatic("First", 2);
Test.fooStatic("First", 2);
}
}
@@ -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) }
}