[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 containingClass?.symbol?.toLookupTag(), forClass = declaration is FirClass
) )
val effectiveVisibility = parentEffectiveVisibility.lowerBound(selfEffectiveVisibility, session.typeContext) 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( if (!isLocal) {
annotations, val annotations = (containingProperty ?: declaration).annotations
visibility, val parentPublishedEffectiveVisibility = when {
selfEffectiveVisibility, containingProperty != null -> containingProperty.publishedApiEffectiveVisibility
containingClass?.symbol, containingClass is FirRegularClass -> containingClass.publishedApiEffectiveVisibility
parentEffectiveVisibility, else -> null
parentPublishedEffectiveVisibility, }
declaration is FirClass,
session computePublishedApiEffectiveVisibility(
)?.let { annotations,
declaration.nonLazyPublishedApiEffectiveVisibility = it visibility,
selfEffectiveVisibility,
containingClass?.symbol,
parentEffectiveVisibility,
parentPublishedEffectiveVisibility,
declaration is FirClass,
session
)?.let {
declaration.nonLazyPublishedApiEffectiveVisibility = it
}
} }
if (containingClass is FirRegularClass && containingClass.isExpect) { if (containingClass is FirRegularClass && containingClass.isExpect) {