[FIR] Skip published visibility computation for local functions

This fixes an exception caused by annotations being unresolved during
 status computation.

#KT-61367
This commit is contained in:
Kirill Rakhman
2023-09-12 17:09:49 +02:00
committed by Space Team
parent f0112040fc
commit 126f2c9440
@@ -290,24 +290,27 @@ class FirStatusResolver(
containingClass?.symbol?.toLookupTag(), forClass = declaration is FirClass
)
val effectiveVisibility = parentEffectiveVisibility.lowerBound(selfEffectiveVisibility, session.typeContext)
val annotations = (containingProperty ?: declaration).annotations
val parentPublishedEffectiveVisibility = when {
containingProperty != null -> containingProperty.publishedApiEffectiveVisibility
containingClass is FirRegularClass -> containingClass.publishedApiEffectiveVisibility
else -> null
}
computePublishedApiEffectiveVisibility(
annotations,
visibility,
selfEffectiveVisibility,
containingClass?.symbol,
parentEffectiveVisibility,
parentPublishedEffectiveVisibility,
declaration is FirClass,
session
)?.let {
declaration.nonLazyPublishedApiEffectiveVisibility = it
if (!isLocal) {
val annotations = (containingProperty ?: declaration).annotations
val parentPublishedEffectiveVisibility = when {
containingProperty != null -> containingProperty.publishedApiEffectiveVisibility
containingClass is FirRegularClass -> containingClass.publishedApiEffectiveVisibility
else -> null
}
computePublishedApiEffectiveVisibility(
annotations,
visibility,
selfEffectiveVisibility,
containingClass?.symbol,
parentEffectiveVisibility,
parentPublishedEffectiveVisibility,
declaration is FirClass,
session
)?.let {
declaration.nonLazyPublishedApiEffectiveVisibility = it
}
}
if (containingClass is FirRegularClass && containingClass.isExpect) {