mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-04-17 00:21:27 +00:00
Remove Unused Receiver: update function/property usages
#KT-8903 Fixed
(cherry picked from commit 92b0c85)
This commit is contained in:
@@ -133,6 +133,7 @@
|
||||
- [`KT-13364`](https://youtrack.jetbrains.com/issue/KT-13364) Do not suggest creating annotations/enum classes for unresolved type parameter bounds
|
||||
- [`KT-12627`](https://youtrack.jetbrains.com/issue/KT-12627) Allow warnings suppression for secondary constructor
|
||||
- [`KT-13365`](https://youtrack.jetbrains.com/issue/KT-13365) Disable "Create property" (non-abstract) in interfaces. Make "Create function" (non-abstract) generate function body in interfaces
|
||||
- [`KT-8903`](https://youtrack.jetbrains.com/issue/KT-8903) Remove Unused Receiver: update function/property usages
|
||||
|
||||
##### New features
|
||||
|
||||
|
||||
@@ -18,16 +18,21 @@ package org.jetbrains.kotlin.idea.inspections
|
||||
|
||||
import com.intellij.codeInspection.*
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinChangeSignatureConfiguration
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.runChangeSignature
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
||||
import org.jetbrains.kotlin.idea.util.getThisReceiverOwner
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isOverridable
|
||||
import org.jetbrains.kotlin.psi.typeRefHelpers.setReceiverTypeReference
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||
@@ -104,8 +109,16 @@ class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
|
||||
return KotlinBundle.message("unused.receiver.parameter.remove")
|
||||
}
|
||||
|
||||
private fun configureChangeSignature() = object : KotlinChangeSignatureConfiguration {
|
||||
override fun performSilently(affectedFunctions: Collection<PsiElement>) = true
|
||||
override fun configure(originalDescriptor: KotlinMethodDescriptor) = originalDescriptor.modify { it.removeParameter(0) }
|
||||
}
|
||||
|
||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||
declaration.setReceiverTypeReference(null)
|
||||
val element = descriptor.psiElement
|
||||
val function = element.parent as? KtCallableDeclaration ?: return
|
||||
val callableDescriptor = function.analyze()[BindingContext.DECLARATION_TO_DESCRIPTOR, function] as? CallableDescriptor ?: return
|
||||
runChangeSignature(project, callableDescriptor, configureChangeSignature(), element, name)
|
||||
}
|
||||
|
||||
override fun getFamilyName(): String = name
|
||||
|
||||
@@ -2,3 +2,7 @@
|
||||
fun <caret>Any.foo() {
|
||||
|
||||
}
|
||||
|
||||
fun test() {
|
||||
1.foo()
|
||||
}
|
||||
@@ -2,3 +2,7 @@
|
||||
fun foo() {
|
||||
|
||||
}
|
||||
|
||||
fun test() {
|
||||
foo()
|
||||
}
|
||||
@@ -1,3 +1,7 @@
|
||||
// "Remove redundant receiver parameter" "true"
|
||||
val <caret>Any.v: Int
|
||||
get() = 123
|
||||
|
||||
fun test() {
|
||||
"".v
|
||||
}
|
||||
@@ -1,3 +1,7 @@
|
||||
// "Remove redundant receiver parameter" "true"
|
||||
val v: Int
|
||||
get() = 123
|
||||
|
||||
fun test() {
|
||||
v
|
||||
}
|
||||
Reference in New Issue
Block a user