Optimize MemberVisibilityCanBePrivateInspection: check that descriptor is in class before resolving it

This commit is contained in:
Natalia Selezneva
2019-01-23 12:05:18 +03:00
parent 560acd631c
commit 49277bb5e4
@@ -79,16 +79,16 @@ class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() {
if (declaration.hasModifier(KtTokens.PRIVATE_KEYWORD) || declaration.hasModifier(KtTokens.OVERRIDE_KEYWORD)) return false
if (declaration.annotationEntries.isNotEmpty()) return false
val descriptor = (declaration.toDescriptor() as? DeclarationDescriptorWithVisibility) ?: return false
when (descriptor.effectiveVisibility()) {
EffectiveVisibility.Private, EffectiveVisibility.Local -> return false
}
val classOrObject = declaration.containingClassOrObject ?: return false
val inheritable = classOrObject is KtClass && classOrObject.isInheritable()
if (!inheritable && declaration.hasModifier(KtTokens.PROTECTED_KEYWORD)) return false //reported by ProtectedInFinalInspection
if (declaration.isOverridable()) return false
val descriptor = (declaration.toDescriptor() as? DeclarationDescriptorWithVisibility) ?: return false
when (descriptor.effectiveVisibility()) {
EffectiveVisibility.Private, EffectiveVisibility.Local -> return false
}
val entryPointsManager = EntryPointsManager.getInstance(declaration.project) as EntryPointsManagerBase
if (UnusedSymbolInspection.checkAnnotatedUsingPatterns(
declaration,