From 01a94624f5ed3248a459cd37884e24ea09d7412e Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Mon, 15 May 2023 08:47:50 +0200 Subject: [PATCH] [AA FIR] KtFirScopeProvider: use lazy resolve only if needed ^KT-56551 --- .../analysis/api/fir/components/KtFirScopeProvider.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt index 1056a0e652f..3f0084cbd76 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt @@ -44,6 +44,7 @@ import org.jetbrains.kotlin.fir.scopes.* import org.jetbrains.kotlin.fir.scopes.impl.* import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase +import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhaseWithCallableMembers import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtElement @@ -110,22 +111,23 @@ internal class KtFirScopeProvider( builder ) } + val firScope = classSymbol.withFirForScope { when (val regularClass = classSymbol.firSymbol.fir) { is FirJavaClass -> buildJavaEnhancementDeclaredMemberScope(useSiteSession, regularClass.symbol, getScopeSession()) else -> useSiteSession.declaredMemberScope(it) } } ?: return getEmptyScope() + return KtFirDelegatingNamesAwareScope(firScope, builder) } override fun getDelegatedMemberScope(classSymbol: KtSymbolWithMembers): KtScope { - val declaredScope = (getDeclaredMemberScope(classSymbol) as? KtFirDelegatingNamesAwareScope)?.firScope - ?: return getEmptyScope() + val declaredScope = (getDeclaredMemberScope(classSymbol) as? KtFirDelegatingNamesAwareScope)?.firScope ?: return getEmptyScope() val firScope = classSymbol.withFirForScope { fir -> - fir.lazyResolveToPhase(FirResolvePhase.STATUS) val delegateFields = fir.delegateFields if (delegateFields.isNotEmpty()) { + fir.lazyResolveToPhaseWithCallableMembers(FirResolvePhase.STATUS) val firSession = analysisSession.useSiteSession FirDelegatedMemberScope( firSession,