From 542f0a61d1d094548c02ae8e81a12a338f969384 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 7 Jun 2018 18:13:33 +0300 Subject: [PATCH] Unused receiver: optimization --- .../UnusedReceiverParameterInspection.kt | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedReceiverParameterInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedReceiverParameterInspection.kt index c573fc0954e..be5a108b7bb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedReceiverParameterInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedReceiverParameterInspection.kt @@ -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