diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeInfo.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeInfo.kt index fdcae51301c..4166799ea33 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeInfo.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeInfo.kt @@ -258,7 +258,11 @@ public open class JetChangeInfo( javaChangeInfos = null } - public fun getOrCreateJavaChangeInfos(): List? { + public fun getOrCreateJavaChangeInfos(multipleLightMethodsWithEqualNames: Boolean = false): List? { + fun filterLightMethods(list: List): List { + return if (multipleLightMethodsWithEqualNames) list else list.groupBy { it.name }.values().map { it.firstOrNull() }.filterNotNull() + } + /* * When primaryMethodUpdated is false, changes to the primary Kotlin declaration are already confirmed, but not yet applied. * It means that originalPsiMethod has already expired, but new one can't be created until Kotlin declaration is updated @@ -350,7 +354,7 @@ public open class JetChangeInfo( if (javaChangeInfos == null) { val method = getMethod() - javaChangeInfos = (originalPsiMethods zip method.toLightMethods()).map { + javaChangeInfos = (filterLightMethods(originalPsiMethods) zip filterLightMethods(method.toLightMethods())).map { val (originalPsiMethod, currentPsiMethod) = it when (method) { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureProcessor.kt index 8e14ed1da06..8d2d07354ae 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureProcessor.kt @@ -48,7 +48,7 @@ public class JetChangeSignatureProcessor(project: Project, override fun findUsages(): Array { val allUsages = ArrayList() - getChangeInfo().getOrCreateJavaChangeInfos()?.let { javaChangeInfos -> + getChangeInfo().getOrCreateJavaChangeInfos(true)?.let { javaChangeInfos -> val javaProcessor = JavaChangeSignatureUsageProcessor() javaChangeInfos.mapTo(allUsages) { KotlinWrapperForJavaUsageInfos(it, javaProcessor.findUsages(it), getChangeInfo().getMethod()) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java index e80d899e1a5..4a35b5da4b3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java @@ -966,7 +966,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro boolean isJavaMethodUsage = isJavaMethodUsage(usageInfo); if (usageInfo instanceof KotlinWrapperForJavaUsageInfos) { - List javaChangeInfos = ((JetChangeInfo) changeInfo).getOrCreateJavaChangeInfos(); + List javaChangeInfos = ((JetChangeInfo) changeInfo).getOrCreateJavaChangeInfos(false); assert javaChangeInfos != null : "JavaChangeInfo not found: " + method.getText(); KotlinWrapperForJavaUsageInfos wrapperForJavaUsageInfos = (KotlinWrapperForJavaUsageInfos) usageInfo; diff --git a/idea/testData/refactoring/changeSignature/FunctionRenameJavaUsagesAfter.1.java b/idea/testData/refactoring/changeSignature/FunctionRenameJavaUsagesAfter.1.java index 8342102568a..ac94a2c7c44 100644 --- a/idea/testData/refactoring/changeSignature/FunctionRenameJavaUsagesAfter.1.java +++ b/idea/testData/refactoring/changeSignature/FunctionRenameJavaUsagesAfter.1.java @@ -1,4 +1,4 @@ -import static _DefaultPackage.bar; +import static FunctionRenameJavaUsagesBeforeKt.bar; class J { void test() {