FirRenderer: partially get rid of RenderMode

This commit is contained in:
Mikhail Glukhikh
2022-07-06 17:03:09 +02:00
committed by Space
parent 9890066b72
commit 7c27e6f843
29 changed files with 254 additions and 169 deletions
@@ -14,7 +14,11 @@ import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.renderer.ConeTypeRenderer
import org.jetbrains.kotlin.fir.renderer.FirAnnotationRenderer
import org.jetbrains.kotlin.fir.renderer.FirNoClassMemberRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer.RenderMode.Companion.WithFqNames
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
import org.jetbrains.kotlin.fir.symbols.impl.*
@@ -27,7 +31,14 @@ object FirDiagnosticRenderers {
val SYMBOL = Renderer { symbol: FirBasedSymbol<*> ->
when (symbol) {
is FirClassLikeSymbol<*>,
is FirCallableSymbol<*> -> symbol.fir.render(FirRenderer.RenderMode.DeclarationHeader)
is FirCallableSymbol<*> -> FirRenderer(
mode = FirRenderer.RenderMode.DeclarationHeader
).with(
typeRenderer = ConeTypeRenderer(),
classMemberRenderer = FirNoClassMemberRenderer(),
annotationRenderer = FirAnnotationRenderer(),
bodyRenderer = null,
).renderElementAsString(symbol.fir)
is FirTypeParameterSymbol -> symbol.name.asString()
else -> "???"
}
@@ -94,7 +105,9 @@ object FirDiagnosticRenderers {
val FQ_NAMES_IN_TYPES = Renderer { symbol: FirBasedSymbol<*> ->
@OptIn(SymbolInternals::class)
symbol.fir.render(mode = FirRenderer.RenderMode.WithFqNamesExceptAnnotationAndBody)
FirRenderer(mode = WithFqNames).with(
annotationRenderer = null, bodyRenderer = null
).renderElementAsString(symbol.fir)
}
val AMBIGUOUS_CALLS = Renderer { candidates: Collection<FirBasedSymbol<*>> ->