"Redundant visibility": Fix false positive for overridden setter
#KT-26051 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
1c8e75eb34
commit
3be5f2b843
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.extensions.DeclarationAttributeAltererExtension
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
@@ -251,8 +252,20 @@ fun KtModifierListOwner.setVisibility(visibilityModifier: KtModifierKeywordToken
|
||||
addModifier(visibilityModifier)
|
||||
}
|
||||
|
||||
fun KtDeclaration.implicitVisibility(): KtModifierKeywordToken? =
|
||||
when {
|
||||
fun KtDeclaration.implicitVisibility(): KtModifierKeywordToken? {
|
||||
if (this is KtPropertyAccessor && this.isSetter) {
|
||||
val property = this.property
|
||||
if (property.hasModifier(KtTokens.OVERRIDE_KEYWORD)) {
|
||||
val visibility = (property.descriptor as? PropertyDescriptor)
|
||||
?.overriddenDescriptors
|
||||
?.firstOrNull()
|
||||
?.setter
|
||||
?.visibility
|
||||
?.toKeywordToken()
|
||||
if (visibility != null) return visibility
|
||||
}
|
||||
}
|
||||
return when {
|
||||
this is KtConstructor<*> -> {
|
||||
val klass = getContainingClassOrObject()
|
||||
if (klass is KtClass && (klass.isEnum() || klass.isSealed())) KtTokens.PRIVATE_KEYWORD
|
||||
@@ -268,6 +281,7 @@ fun KtDeclaration.implicitVisibility(): KtModifierKeywordToken? =
|
||||
KtTokens.DEFAULT_VISIBILITY_KEYWORD
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun KtModifierListOwner.canBePrivate() = modifierList?.hasModifier(KtTokens.ABSTRACT_KEYWORD) != true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user