[Analysis API FIR] avoid redundant resolve in renderer

Before we resolved all declarations to body resolve.
It was rarely needed and badly affects performance.
If the resolution will still be needed, it will be lazily performed by KtSymbol
This commit is contained in:
Ilya Kirillov
2023-02-10 18:11:20 +01:00
committed by Space Team
parent 06095b379f
commit 1f834aa99c
@@ -7,21 +7,11 @@ package org.jetbrains.kotlin.analysis.api.fir.components
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol
import org.jetbrains.kotlin.analysis.api.impl.base.components.KtRendererProviderImpl
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.renderer.declarations.KtDeclarationRenderer
import org.jetbrains.kotlin.analysis.api.symbols.KtDeclarationSymbol
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
@OptIn(KtAnalysisApiInternals::class)
internal class KtFirRendererProvider(
analysisSession: KtAnalysisSession,
token: KtLifetimeToken
) : KtRendererProviderImpl(analysisSession, token) {
override fun renderDeclaration(symbol: KtDeclarationSymbol, renderer: KtDeclarationRenderer): String {
symbol.firSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
return super.renderDeclaration(symbol, renderer)
}
}
) : KtRendererProviderImpl(analysisSession, token)