Remove redundant receiver in "Change function signature" quick fix

So #KT-12298 Fixed
This commit is contained in:
Toshiaki Kameyama
2018-05-24 11:04:03 +03:00
committed by Mikhail Glukhikh
parent 0cb907d637
commit ddf647ae96
4 changed files with 25 additions and 0 deletions
@@ -42,6 +42,7 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtParameterList
import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.psi.typeRefHelpers.setReceiverTypeReference
import org.jetbrains.kotlin.renderer.ClassifierNamePolicy
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.resolve.descriptorUtil.setSingleOverridden
@@ -330,6 +331,9 @@ class ChangeMemberFunctionSignatureFix private constructor(
}
val newParameterList = function.valueParameterList!!.replace(patternFunction.valueParameterList!!) as KtParameterList
if (patternFunction.receiverTypeReference == null && function.receiverTypeReference != null) {
function.setReceiverTypeReference(null)
}
ShortenReferences.DEFAULT.process(newParameterList)
}
}
@@ -0,0 +1,8 @@
// "Change function signature to 'fun x(s: String)'" "true"
open class A {
open fun x(s: String) {}
}
class B : A() {
<caret>override fun String.x() {}
}
@@ -0,0 +1,8 @@
// "Change function signature to 'fun x(s: String)'" "true"
open class A {
open fun x(s: String) {}
}
class B : A() {
<caret>override fun x(s: String) {}
}
@@ -8362,6 +8362,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
runTest("idea/testData/quickfix/override/nothingToOverride/overrideJavaMethod.kt");
}
@TestMetadata("removeFunctionReciever.kt")
public void testRemoveFunctionReciever() throws Exception {
runTest("idea/testData/quickfix/override/nothingToOverride/removeFunctionReciever.kt");
}
@TestMetadata("removeOverride.kt")
public void testRemoveOverride() throws Exception {
runTest("idea/testData/quickfix/override/nothingToOverride/removeOverride.kt");