Analysis API: rework KtSymbol hierarchy

- make some symbols to be KtPossiblyMemberSymbols
- introduce KtDeclarationSymbol for declarations
This commit is contained in:
Ilya Kirillov
2021-11-30 13:10:12 +01:00
parent 22e31ea414
commit 985c6fa0b8
11 changed files with 34 additions and 25 deletions
@@ -11,16 +11,11 @@ import org.jetbrains.kotlin.analysis.api.components.KtTypeRendererOptions
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.renderer.ConeTypeIdeRenderer
import org.jetbrains.kotlin.analysis.api.fir.renderer.FirIdeRenderer
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirReceiverParameterSymbol
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol
import org.jetbrains.kotlin.analysis.api.fir.types.KtFirType
import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtPossibleMemberSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithKind
import org.jetbrains.kotlin.analysis.api.symbols.KtDeclarationSymbol
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
internal class KtFirSymbolDeclarationRendererProvider(
@@ -33,10 +28,10 @@ internal class KtFirSymbolDeclarationRendererProvider(
return ConeTypeIdeRenderer(analysisSession.firResolveState.rootModuleSession, options).renderType(type.coneType)
}
override fun renderMember(symbol: KtPossibleMemberSymbol, options: KtDeclarationRendererOptions): String {
override fun renderDeclaration(symbol: KtDeclarationSymbol, options: KtDeclarationRendererOptions): String {
require(symbol is KtFirSymbol<*>)
return symbol.firRef.withFir(FirResolvePhase.BODY_RESOLVE) { fir ->
FirIdeRenderer.render(fir as FirMemberDeclaration, options, fir.moduleData.session)
FirIdeRenderer.render(fir, options, fir.moduleData.session)
}
}
}