diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt index fc5c6f8b156..d30a234ed7e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt @@ -442,12 +442,15 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor { private fun findKotlinOverrides(changeInfo: ChangeInfo, result: MutableSet) { val method = changeInfo.method as? PsiMethod ?: return + val methodDescriptor = method.getJavaMethodDescriptor() ?: return + + val baseFunctionInfo = KotlinCallableDefinitionUsage(method, methodDescriptor, null, null) for (overridingMethod in OverridingMethodsSearch.search(method)) { val unwrappedElement = overridingMethod.namedUnwrappedElement as? KtNamedFunction ?: continue val functionDescriptor = unwrappedElement.resolveToDescriptorIfAny() ?: continue result.add(DeferredJavaMethodOverrideOrSAMUsage(unwrappedElement, functionDescriptor, null)) - findDeferredUsagesOfParameters(changeInfo, result, unwrappedElement, functionDescriptor) + findDeferredUsagesOfParameters(changeInfo, result, unwrappedElement, functionDescriptor, baseFunctionInfo) } } @@ -474,8 +477,9 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor { changeInfo: ChangeInfo, result: MutableSet, function: KtNamedFunction, - functionDescriptor: FunctionDescriptor) { - val functionInfoForParameters = KotlinCallableDefinitionUsage(function, functionDescriptor, null, null) + functionDescriptor: FunctionDescriptor, + baseFunctionInfo: KotlinCallableDefinitionUsage) { + val functionInfoForParameters = KotlinCallableDefinitionUsage(function, functionDescriptor, baseFunctionInfo, null) val oldParameters = function.valueParameters val parameters = changeInfo.newParameters for ((paramIndex, parameterInfo) in parameters.withIndex()) { diff --git a/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameAfter.1.kt b/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameAfter.1.kt new file mode 100644 index 00000000000..278fd2a861a --- /dev/null +++ b/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameAfter.1.kt @@ -0,0 +1,3 @@ +class K : J() { + override fun foo(name: String, n: Int) = name.length +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameAfter.java b/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameAfter.java new file mode 100644 index 00000000000..943c15b4eb0 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameAfter.java @@ -0,0 +1,3 @@ +abstract class J { + abstract int foo(String s, int n); +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameBefore.1.kt b/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameBefore.1.kt new file mode 100644 index 00000000000..f8d4475731a --- /dev/null +++ b/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameBefore.1.kt @@ -0,0 +1,3 @@ +class K : J() { + override fun foo(name: String) = name.length +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameBefore.java b/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameBefore.java new file mode 100644 index 00000000000..c82b9642709 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/KotlinOverridingJavaWithDifferentParamNameBefore.java @@ -0,0 +1,3 @@ +abstract class J { + abstract int foo(String s); +} \ 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 c7aaba45bcb..10ff9e04989 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt @@ -1008,4 +1008,8 @@ class KotlinChangeSignatureTest : KotlinLightCodeInsightFixtureTestCase() { fun testGetConventionRenameToFoo() = doTest { newName = "foo" } fun testGetConventionRenameToInvoke() = doTest { newName = "invoke" } + + fun testKotlinOverridingJavaWithDifferentParamName() = doJavaTest { + newParameters.add(ParameterInfoImpl(-1, "n", PsiType.INT)) + } } \ No newline at end of file