From 126f2c944094490fbb192afa0cf5de9212aee391 Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Tue, 12 Sep 2023 17:09:49 +0200 Subject: [PATCH] [FIR] Skip published visibility computation for local functions This fixes an exception caused by annotations being unresolved during status computation. #KT-61367 --- .../resolve/transformers/FirStatusResolver.kt | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt index 08ce86718db..93cc5ab4744 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt @@ -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) {