K2: Rework RedundantVisibilityModifierSyntaxChecker::implicitVisibility

Avoid assumption there, that for accessors we have a containing property
in the context

This necessary as a part of getting rid context modifications in checkers
This commit is contained in:
Denis.Zharkov
2023-02-07 14:18:42 +01:00
committed by Space Team
parent 2cd6b8253f
commit 1898dfd40d
@@ -59,20 +59,18 @@ object RedundantVisibilityModifierSyntaxChecker : FirDeclarationSyntaxChecker<Fi
) {
var setterImplicitVisibility: Visibility? = null
context.withDeclaration(property) {
property.setter?.let { setter ->
val visibility = setter.implicitVisibility(it)
setterImplicitVisibility = visibility
checkElementAndReport(setter, visibility, property, it, reporter)
}
property.setter?.let { setter ->
val visibility = setter.implicitVisibility(context)
setterImplicitVisibility = visibility
checkElementAndReport(setter, visibility, property, context, reporter)
}
property.getter?.let { getter ->
checkElementAndReport(getter, property, it, reporter)
}
property.getter?.let { getter ->
checkElementAndReport(getter, property, context, reporter)
}
property.backingField?.let { field ->
checkElementAndReport(field, property, it, reporter)
}
property.backingField?.let { field ->
checkElementAndReport(field, property, context, reporter)
}
if (property.canMakeSetterMoreAccessible(setterImplicitVisibility)) {
@@ -180,13 +178,10 @@ object RedundantVisibilityModifierSyntaxChecker : FirDeclarationSyntaxChecker<Fi
return when {
this is FirPropertyAccessor
&& isSetter
&& context.containingDeclarations.size >= 2
&& context.containingDeclarations.asReversed()[1] is FirClass
&& context.containingDeclarations.last() is FirClass
&& propertySymbol.isOverride -> findPropertyAccessorVisibility(this, context)
this is FirPropertyAccessor -> {
context.findClosest<FirProperty>()?.visibility ?: Visibilities.DEFAULT_VISIBILITY
}
this is FirPropertyAccessor -> propertySymbol.visibility
this is FirConstructor -> {
val classSymbol = this.getContainingClassSymbol(context.session)