[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:
committed by
Space Team
parent
06095b379f
commit
1f834aa99c
+1
-11
@@ -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)
|
||||
Reference in New Issue
Block a user