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.analyze
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.core.isOverridable
|
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.KotlinChangeSignatureConfiguration
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
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.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType
|
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.forEachDescendantOfType
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
|
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
|
||||||
import org.jetbrains.kotlin.psi.typeRefHelpers.setReceiverTypeReference
|
import org.jetbrains.kotlin.psi.typeRefHelpers.setReceiverTypeReference
|
||||||
@@ -61,21 +59,21 @@ class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
|
|||||||
val receiverTypeReference = callableDeclaration.receiverTypeReference
|
val receiverTypeReference = callableDeclaration.receiverTypeReference
|
||||||
if (receiverTypeReference == null || receiverTypeReference.textRange.isEmpty) return
|
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 context = receiverTypeReference.analyze()
|
||||||
val receiverType = context[BindingContext.TYPE, receiverTypeReference] ?: return
|
val receiverType = context[BindingContext.TYPE, receiverTypeReference] ?: return
|
||||||
val receiverTypeDeclaration = receiverType.constructor.declarationDescriptor
|
val receiverTypeDeclaration = receiverType.constructor.declarationDescriptor
|
||||||
if (DescriptorUtils.isCompanionObject(receiverTypeDeclaration)) return
|
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
|
val callable = callableDeclaration.descriptor
|
||||||
|
|
||||||
if (callable != null && MainFunctionDetector.isMain(callable)) return
|
if (callable != null && MainFunctionDetector.isMain(callable)) return
|
||||||
|
|||||||
Reference in New Issue
Block a user