From b713dfd7ea244fd3401016ef509e390a685f2984 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Tue, 16 May 2023 16:40:07 +0200 Subject: [PATCH] [AA FIR] KtFirOverrideInfoProvider: resolve to status only if needed ^KT-56551 --- .../api/fir/symbols/KtFirOverrideInfoProvider.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirOverrideInfoProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirOverrideInfoProvider.kt index b1cc3ef5311..e28665d0034 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirOverrideInfoProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirOverrideInfoProvider.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -35,11 +35,12 @@ internal class KtFirOverrideInfoProvider( require(memberSymbol is KtFirSymbol<*>) require(classSymbol is KtFirSymbol<*>) - // Inspecting visibility requires resolving to status - classSymbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS) val memberFir = memberSymbol.firSymbol.fir as? FirCallableDeclaration ?: return false val parentClassFir = classSymbol.firSymbol.fir as? FirClass ?: return false + // Inspecting visibility requires resolving to status + classSymbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS) + return memberFir.isVisibleInClass(parentClassFir) } @@ -48,9 +49,9 @@ internal class KtFirOverrideInfoProvider( require(parentClassSymbol is KtFirSymbol<*>) // Inspecting implementation status requires resolving to status - parentClassSymbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS) val memberFir = memberSymbol.firSymbol.fir as? FirCallableDeclaration ?: return null val parentClassFir = parentClassSymbol.firSymbol.fir as? FirClass ?: return null + memberFir.lazyResolveToPhase(FirResolvePhase.STATUS) return memberFir.symbol.getImplementationStatus( SessionHolderImpl(