Unused receiver: optimization
This commit is contained in:
+10
-12
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.core.isOverridable
|
||||
import org.jetbrains.kotlin.idea.intentions.getCallableDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinChangeSignatureConfiguration
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
||||
@@ -41,7 +40,6 @@ import org.jetbrains.kotlin.idea.util.getThisReceiverOwner
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
|
||||
import org.jetbrains.kotlin.psi.typeRefHelpers.setReceiverTypeReference
|
||||
@@ -61,21 +59,21 @@ class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
|
||||
val receiverTypeReference = callableDeclaration.receiverTypeReference
|
||||
if (receiverTypeReference == null || receiverTypeReference.textRange.isEmpty) return
|
||||
|
||||
if (callableDeclaration is KtProperty && callableDeclaration.accessors.isEmpty()) return
|
||||
if (callableDeclaration is KtNamedFunction && !callableDeclaration.hasBody()) return
|
||||
|
||||
if (callableDeclaration.hasModifier(KtTokens.OVERRIDE_KEYWORD) ||
|
||||
callableDeclaration.hasModifier(KtTokens.OPERATOR_KEYWORD) ||
|
||||
callableDeclaration.hasModifier(KtTokens.INFIX_KEYWORD) ||
|
||||
callableDeclaration.hasActualModifier() ||
|
||||
callableDeclaration.isOverridable()
|
||||
) return
|
||||
|
||||
val context = receiverTypeReference.analyze()
|
||||
val receiverType = context[BindingContext.TYPE, receiverTypeReference] ?: return
|
||||
val receiverTypeDeclaration = receiverType.constructor.declarationDescriptor
|
||||
if (DescriptorUtils.isCompanionObject(receiverTypeDeclaration)) return
|
||||
|
||||
if (callableDeclaration.isOverridable() ||
|
||||
callableDeclaration.hasModifier(KtTokens.OVERRIDE_KEYWORD) ||
|
||||
callableDeclaration.hasModifier(KtTokens.OPERATOR_KEYWORD) ||
|
||||
callableDeclaration.hasModifier(KtTokens.INFIX_KEYWORD) ||
|
||||
callableDeclaration.hasActualModifier()
|
||||
) return
|
||||
|
||||
if (callableDeclaration is KtProperty && callableDeclaration.accessors.isEmpty()) return
|
||||
if (callableDeclaration is KtNamedFunction && !callableDeclaration.hasBody()) return
|
||||
|
||||
val callable = callableDeclaration.descriptor
|
||||
|
||||
if (callable != null && MainFunctionDetector.isMain(callable)) return
|
||||
|
||||
Reference in New Issue
Block a user