From 66047f159f96a8fe8eccff9e4b5557bc54654749 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Fri, 30 Apr 2021 11:17:25 +0300 Subject: [PATCH] FIR IDE: Resolve declaration in `withFirDeclaration` only if needed --- .../idea/fir/low/level/api/api/LowLevelFirApiFacade.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt index e3a12283fe6..5ec0387eac3 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt @@ -45,8 +45,14 @@ inline fun KtDeclaration.withFirDeclaration( action: (FirDeclaration) -> R ): R { val firDeclaration = resolveState.findSourceFirDeclaration(this) - firDeclaration.resolvedFirToPhase(phase, resolveState) - return action(firDeclaration) + + val resolvedDeclaration = if (firDeclaration.resolvePhase < phase) { + firDeclaration.resolvedFirToPhase(phase, resolveState) + } else { + firDeclaration + } + + return action(resolvedDeclaration) } /**