Added quick fix for "Unused receiver parameter".
This commit is contained in:
+19
-3
@@ -17,7 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.idea.inspections
|
package org.jetbrains.kotlin.idea.inspections
|
||||||
|
|
||||||
import com.intellij.codeInspection.*
|
import com.intellij.codeInspection.*
|
||||||
import com.intellij.extapi.psi.ASTDelegatePsiElement
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.PsiElementVisitor
|
import com.intellij.psi.PsiElementVisitor
|
||||||
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
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.lexer.JetTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.isOverridable
|
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.calls.callUtil.getResolvedCall
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
|
||||||
|
|
||||||
@@ -62,7 +61,12 @@ public class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (!used) {
|
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.Override.class,
|
||||||
QuickFixTestGenerated.PlatformClasses.class,
|
QuickFixTestGenerated.PlatformClasses.class,
|
||||||
QuickFixTestGenerated.RemoveUnused.class,
|
QuickFixTestGenerated.RemoveUnused.class,
|
||||||
|
QuickFixTestGenerated.RemoveUnusedReceiver.class,
|
||||||
QuickFixTestGenerated.Supercalls.class,
|
QuickFixTestGenerated.Supercalls.class,
|
||||||
QuickFixTestGenerated.SupertypeInitialization.class,
|
QuickFixTestGenerated.SupertypeInitialization.class,
|
||||||
QuickFixTestGenerated.Suppress.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")
|
@TestMetadata("idea/testData/quickfix/supercalls")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user