diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeMemberFunctionSignatureFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeMemberFunctionSignatureFix.kt index cf8d9051ca7..085f792016e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeMemberFunctionSignatureFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeMemberFunctionSignatureFix.kt @@ -338,8 +338,15 @@ class ChangeMemberFunctionSignatureFix private constructor( } as KtParameterList ShortenReferences.DEFAULT.process(newParameterList) - if (patternFunction.receiverTypeReference == null && function.receiverTypeReference != null) { - function.setReceiverTypeReference(null) + val patternFunctionReceiver = patternFunction.receiverTypeReference + if (patternFunctionReceiver == null) { + if (function.receiverTypeReference != null) { + function.setReceiverTypeReference(null) + } + } else { + function.setReceiverTypeReference(patternFunction.receiverTypeReference)?.let { + ShortenReferences.DEFAULT.process(it) + } } val patternTypeParameterList = patternFunction.typeParameterList diff --git a/idea/testData/quickfix/override/nothingToOverride/addFunctionReciever.kt b/idea/testData/quickfix/override/nothingToOverride/addFunctionReciever.kt new file mode 100644 index 00000000000..130009e2a96 --- /dev/null +++ b/idea/testData/quickfix/override/nothingToOverride/addFunctionReciever.kt @@ -0,0 +1,8 @@ +// "Change function signature to 'fun Int.foo(a: String)'" "true" +abstract class C { + abstract fun Int.foo(a: String) +} + +class B : C() { + override fun foo(a: Int) {} +} \ No newline at end of file diff --git a/idea/testData/quickfix/override/nothingToOverride/addFunctionReciever.kt.after b/idea/testData/quickfix/override/nothingToOverride/addFunctionReciever.kt.after new file mode 100644 index 00000000000..894198e7385 --- /dev/null +++ b/idea/testData/quickfix/override/nothingToOverride/addFunctionReciever.kt.after @@ -0,0 +1,8 @@ +// "Change function signature to 'fun Int.foo(a: String)'" "true" +abstract class C { + abstract fun Int.foo(a: String) +} + +class B : C() { + override fun Int.foo(a: String) {} +} \ No newline at end of file diff --git a/idea/testData/quickfix/override/nothingToOverride/changeFunctionReciever.kt b/idea/testData/quickfix/override/nothingToOverride/changeFunctionReciever.kt new file mode 100644 index 00000000000..2a87f782944 --- /dev/null +++ b/idea/testData/quickfix/override/nothingToOverride/changeFunctionReciever.kt @@ -0,0 +1,8 @@ +// "Change function signature to 'fun Int.foo(a: String)'" "true" +abstract class C { + abstract fun Int.foo(a: String) +} + +class B : C() { + override fun String.foo(a: Int) {} +} \ No newline at end of file diff --git a/idea/testData/quickfix/override/nothingToOverride/changeFunctionReciever.kt.after b/idea/testData/quickfix/override/nothingToOverride/changeFunctionReciever.kt.after new file mode 100644 index 00000000000..894198e7385 --- /dev/null +++ b/idea/testData/quickfix/override/nothingToOverride/changeFunctionReciever.kt.after @@ -0,0 +1,8 @@ +// "Change function signature to 'fun Int.foo(a: String)'" "true" +abstract class C { + abstract fun Int.foo(a: String) +} + +class B : C() { + override fun Int.foo(a: String) {} +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index c75773fc393..bab4dd23359 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -10162,6 +10162,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { runTest("idea/testData/quickfix/override/nothingToOverride/addFunctionNonUnitReturnType.kt"); } + @TestMetadata("addFunctionReciever.kt") + public void testAddFunctionReciever() throws Exception { + runTest("idea/testData/quickfix/override/nothingToOverride/addFunctionReciever.kt"); + } + @TestMetadata("addFunctionSealedClass.kt") public void testAddFunctionSealedClass() throws Exception { runTest("idea/testData/quickfix/override/nothingToOverride/addFunctionSealedClass.kt"); @@ -10226,6 +10231,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/quickfix/override/nothingToOverride"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), null, true); } + @TestMetadata("changeFunctionReciever.kt") + public void testChangeFunctionReciever() throws Exception { + runTest("idea/testData/quickfix/override/nothingToOverride/changeFunctionReciever.kt"); + } + @TestMetadata("changeParameterType.kt") public void testChangeParameterType() throws Exception { runTest("idea/testData/quickfix/override/nothingToOverride/changeParameterType.kt");