Added quick fix for "Unused receiver parameter".
This commit is contained in:
+19
-3
@@ -17,7 +17,6 @@
|
||||
package org.jetbrains.kotlin.idea.inspections
|
||||
|
||||
import com.intellij.codeInspection.*
|
||||
import com.intellij.extapi.psi.ASTDelegatePsiElement
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
||||
@@ -27,7 +26,7 @@ import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isOverridable
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.psi.typeRefHelpers.setReceiverTypeReference
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
|
||||
|
||||
@@ -62,7 +61,12 @@ public class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
|
||||
})
|
||||
|
||||
if (!used) {
|
||||
holder.registerProblem(receiverTypeReference, JetBundle.message("unused.receiver.parameter"), ProblemHighlightType.LIKE_UNUSED_SYMBOL) // TODO add quick fix
|
||||
holder.registerProblem(
|
||||
receiverTypeReference,
|
||||
JetBundle.message("unused.receiver.parameter"),
|
||||
ProblemHighlightType.LIKE_UNUSED_SYMBOL,
|
||||
MyQuickFix(callableDeclaration)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,4 +79,16 @@ public class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class MyQuickFix(val declaration: JetCallableDeclaration): LocalQuickFix {
|
||||
override fun getName(): String {
|
||||
return JetBundle.message("unused.receiver.parameter.remove")
|
||||
}
|
||||
|
||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor?) {
|
||||
declaration.setReceiverTypeReference(null)
|
||||
}
|
||||
|
||||
override fun getFamilyName(): String = "whatever"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
org.jetbrains.kotlin.idea.inspections.UnusedReceiverParameterInspection
|
||||
@@ -0,0 +1,4 @@
|
||||
// "Remove redundant receiver parameter" "true"
|
||||
fun foo() {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
// "Remove redundant receiver parameter" "true"
|
||||
val v: Int
|
||||
get() = 123
|
||||
@@ -0,0 +1,4 @@
|
||||
// "Remove redundant receiver parameter" "true"
|
||||
fun <caret>Any.foo() {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
// "Remove redundant receiver parameter" "true"
|
||||
val <caret>Any.v: Int
|
||||
get() = 123
|
||||
@@ -45,6 +45,7 @@ import java.util.regex.Pattern;
|
||||
QuickFixTestGenerated.Override.class,
|
||||
QuickFixTestGenerated.PlatformClasses.class,
|
||||
QuickFixTestGenerated.RemoveUnused.class,
|
||||
QuickFixTestGenerated.RemoveUnusedReceiver.class,
|
||||
QuickFixTestGenerated.Supercalls.class,
|
||||
QuickFixTestGenerated.SupertypeInitialization.class,
|
||||
QuickFixTestGenerated.Suppress.class,
|
||||
@@ -3774,6 +3775,27 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/quickfix/removeUnusedReceiver")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class RemoveUnusedReceiver extends AbstractQuickFixTest {
|
||||
public void testAllFilesPresentInRemoveUnusedReceiver() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/removeUnusedReceiver"), Pattern.compile("^before(\\w+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("beforeInFunction.kt")
|
||||
public void testInFunction() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/removeUnusedReceiver/beforeInFunction.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("beforeInProperty.kt")
|
||||
public void testInProperty() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/removeUnusedReceiver/beforeInProperty.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/quickfix/supercalls")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
Reference in New Issue
Block a user