Simplify creation of FirRenderer
This commit is contained in:
+2
-2
@@ -27,7 +27,7 @@ object FirDiagnosticRenderers {
|
||||
val SYMBOL = Renderer { symbol: FirBasedSymbol<*> ->
|
||||
when (symbol) {
|
||||
is FirClassLikeSymbol<*>,
|
||||
is FirCallableSymbol<*> -> FirRenderer().with(
|
||||
is FirCallableSymbol<*> -> FirRenderer(
|
||||
typeRenderer = ConeTypeRenderer(),
|
||||
idRenderer = ConeIdShortRenderer(),
|
||||
classMemberRenderer = FirNoClassMemberRenderer(),
|
||||
@@ -103,7 +103,7 @@ object FirDiagnosticRenderers {
|
||||
|
||||
val FQ_NAMES_IN_TYPES = Renderer { symbol: FirBasedSymbol<*> ->
|
||||
@OptIn(SymbolInternals::class)
|
||||
FirRenderer().with(
|
||||
FirRenderer(
|
||||
annotationRenderer = null, bodyRenderer = null, idRenderer = ConeIdFullRenderer()
|
||||
).renderElementAsString(symbol.fir)
|
||||
}
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ abstract class AbstractLightTree2FirConverterTestCase : AbstractRawFirBuilderTes
|
||||
scopeProvider = StubFirScopeProvider,
|
||||
diagnosticsReporter = null
|
||||
).buildFirFile(Paths.get(filePath))
|
||||
val firDump = FirRenderer().with(declarationRenderer = FirDeclarationRendererWithAttributes()).renderElementAsString(firFile)
|
||||
val firDump = FirRenderer.withDeclarationAttributes().renderElementAsString(firFile)
|
||||
|
||||
val expectedFile = File(filePath.replace(".kt", ".txt"))
|
||||
KotlinTestUtils.assertEqualsToFile(expectedFile, firDump)
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
|
||||
protected open fun doRawFirTest(filePath: String) {
|
||||
val file = createKtFile(filePath)
|
||||
val firFile = file.toFirFile(BodyBuildingMode.NORMAL)
|
||||
val firFileDump = FirRenderer().with(declarationRenderer = FirDeclarationRendererWithAttributes()).renderElementAsString(firFile)
|
||||
val firFileDump = FirRenderer.withDeclarationAttributes().renderElementAsString(firFile)
|
||||
val expectedPath = filePath.replace(".kt", ".txt")
|
||||
KotlinTestUtils.assertEqualsToFile(File(expectedPath), firFileDump)
|
||||
}
|
||||
|
||||
+1
-1
@@ -134,7 +134,7 @@ fun CFGNode<*>.render(): String =
|
||||
|
||||
// NB: renderer has a state, so we have to create it each time
|
||||
private val CfgRenderer
|
||||
get() = FirRenderer().with(annotationRenderer = null, callArgumentsRenderer = FirCallNoArgumentsRenderer())
|
||||
get() = FirRenderer(annotationRenderer = null, callArgumentsRenderer = FirCallNoArgumentsRenderer())
|
||||
|
||||
private fun FirFunction.name(): String = when (this) {
|
||||
is FirSimpleFunction -> name.asString()
|
||||
|
||||
@@ -28,27 +28,41 @@ import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
import java.util.*
|
||||
|
||||
class FirRenderer private constructor(
|
||||
private val builder: StringBuilder,
|
||||
components: FirComponentsImpl,
|
||||
private val annotationRenderer: FirAnnotationRenderer?,
|
||||
private val bodyRenderer: FirBodyRenderer?,
|
||||
private val callArgumentsRenderer: FirCallArgumentsRenderer,
|
||||
private val classMemberRenderer: FirClassMemberRenderer,
|
||||
private val contractRenderer: ConeContractRenderer?,
|
||||
private val declarationRenderer: FirDeclarationRenderer,
|
||||
private val idRenderer: ConeIdRenderer,
|
||||
private val modifierRenderer: FirModifierRenderer,
|
||||
private val packageDirectiveRenderer: FirPackageDirectiveRenderer?,
|
||||
private val propertyAccessorRenderer: FirPropertyAccessorRenderer?,
|
||||
private val resolvePhaseRenderer: FirResolvePhaseRenderer?,
|
||||
private val typeRenderer: ConeTypeRenderer,
|
||||
private val valueParameterRenderer: FirValueParameterRenderer,
|
||||
class FirRenderer(
|
||||
builder: StringBuilder = StringBuilder(),
|
||||
private val annotationRenderer: FirAnnotationRenderer? = FirAnnotationRenderer(),
|
||||
private val bodyRenderer: FirBodyRenderer? = FirBodyRenderer(),
|
||||
private val callArgumentsRenderer: FirCallArgumentsRenderer = FirCallArgumentsRenderer(),
|
||||
private val classMemberRenderer: FirClassMemberRenderer = FirClassMemberRenderer(),
|
||||
private val contractRenderer: ConeContractRenderer? = ConeContractRenderer(),
|
||||
private val declarationRenderer: FirDeclarationRenderer = FirDeclarationRenderer(),
|
||||
private val idRenderer: ConeIdRenderer = ConeIdRendererForDebugging(),
|
||||
private val modifierRenderer: FirModifierRenderer = FirAllModifierRenderer(),
|
||||
private val packageDirectiveRenderer: FirPackageDirectiveRenderer? = null,
|
||||
private val propertyAccessorRenderer: FirPropertyAccessorRenderer? = FirPropertyAccessorRenderer(),
|
||||
resolvePhaseRenderer: FirResolvePhaseRenderer? = null,
|
||||
private val typeRenderer: ConeTypeRenderer = ConeTypeRendererForDebugging(),
|
||||
private val valueParameterRenderer: FirValueParameterRenderer = FirValueParameterRenderer(),
|
||||
) : FirPrinter(builder) {
|
||||
|
||||
private val visitor = Visitor()
|
||||
|
||||
companion object {
|
||||
fun noAnnotationBodiesAccessorAndArguments(): FirRenderer =
|
||||
FirRenderer(
|
||||
annotationRenderer = null, bodyRenderer = null, propertyAccessorRenderer = null,
|
||||
callArgumentsRenderer = FirCallNoArgumentsRenderer()
|
||||
)
|
||||
|
||||
fun withResolvePhase(): FirRenderer =
|
||||
FirRenderer(resolvePhaseRenderer = FirResolvePhaseRenderer())
|
||||
|
||||
fun withDeclarationAttributes(): FirRenderer =
|
||||
FirRenderer(declarationRenderer = FirDeclarationRendererWithAttributes())
|
||||
}
|
||||
|
||||
init {
|
||||
val components = FirComponentsImpl()
|
||||
components.visitor = visitor
|
||||
components.annotationRenderer = annotationRenderer
|
||||
components.bodyRenderer = bodyRenderer
|
||||
@@ -80,51 +94,6 @@ class FirRenderer private constructor(
|
||||
valueParameterRenderer.components = components
|
||||
}
|
||||
|
||||
private constructor(
|
||||
builder: StringBuilder,
|
||||
components: FirComponentsImpl,
|
||||
) : this(
|
||||
builder,
|
||||
components,
|
||||
FirAnnotationRenderer(),
|
||||
FirBodyRenderer(),
|
||||
FirCallArgumentsRenderer(),
|
||||
FirClassMemberRenderer(),
|
||||
ConeContractRenderer(),
|
||||
FirDeclarationRenderer(),
|
||||
ConeIdRendererForDebugging(),
|
||||
FirAllModifierRenderer(),
|
||||
packageDirectiveRenderer = null,
|
||||
FirPropertyAccessorRenderer(),
|
||||
resolvePhaseRenderer = null,
|
||||
ConeTypeRendererForDebugging(),
|
||||
FirValueParameterRenderer(),
|
||||
)
|
||||
|
||||
constructor(builder: StringBuilder = StringBuilder()) : this(builder, FirComponentsImpl())
|
||||
|
||||
fun with(
|
||||
annotationRenderer: FirAnnotationRenderer? = this.annotationRenderer,
|
||||
bodyRenderer: FirBodyRenderer? = this.bodyRenderer,
|
||||
callArgumentsRenderer: FirCallArgumentsRenderer = this.callArgumentsRenderer,
|
||||
classMemberRenderer: FirClassMemberRenderer = this.classMemberRenderer,
|
||||
contractRenderer: ConeContractRenderer? = this.contractRenderer,
|
||||
declarationRenderer: FirDeclarationRenderer = this.declarationRenderer,
|
||||
idRenderer: ConeIdRenderer = this.idRenderer,
|
||||
modifierRenderer: FirModifierRenderer = this.modifierRenderer,
|
||||
packageDirectiveRenderer: FirPackageDirectiveRenderer? = this.packageDirectiveRenderer,
|
||||
propertyAccessorRenderer: FirPropertyAccessorRenderer? = this.propertyAccessorRenderer,
|
||||
resolvePhaseRenderer: FirResolvePhaseRenderer? = this.resolvePhaseRenderer,
|
||||
typeRenderer: ConeTypeRenderer = this.typeRenderer,
|
||||
valueParameterRenderer: FirValueParameterRenderer = this.valueParameterRenderer,
|
||||
): FirRenderer = FirRenderer(
|
||||
builder, FirComponentsImpl(),
|
||||
annotationRenderer, bodyRenderer, callArgumentsRenderer, classMemberRenderer,
|
||||
contractRenderer, declarationRenderer, idRenderer, modifierRenderer,
|
||||
packageDirectiveRenderer, propertyAccessorRenderer,
|
||||
resolvePhaseRenderer, typeRenderer, valueParameterRenderer
|
||||
)
|
||||
|
||||
fun renderElementAsString(element: FirElement): String {
|
||||
element.accept(visitor)
|
||||
return toString()
|
||||
|
||||
+2
-1
@@ -39,7 +39,8 @@ class FirDumpHandler(
|
||||
addAll(info.session.createFilesWithGeneratedDeclarations())
|
||||
}
|
||||
|
||||
val renderer = FirRenderer(builderForModule).with(
|
||||
val renderer = FirRenderer(
|
||||
builder = builderForModule,
|
||||
packageDirectiveRenderer = FirPackageDirectiveRenderer(),
|
||||
classMemberRenderer = FirClassMemberRendererWithGeneratedDeclarations(info.session)
|
||||
)
|
||||
|
||||
+1
-4
@@ -137,10 +137,7 @@ class FirScopeDumpHandler(testServices: TestServices) : FirAnalysisHandler(testS
|
||||
|
||||
private fun SmartPrinter.printInfo(declaration: FirCallableDeclaration, scope: FirTypeScope, counter: SymbolCounter) {
|
||||
print("[${declaration.origin}]: ")
|
||||
val renderedDeclaration = FirRenderer().with(
|
||||
annotationRenderer = null, bodyRenderer = null, propertyAccessorRenderer = null,
|
||||
callArgumentsRenderer = FirCallNoArgumentsRenderer()
|
||||
).renderElementAsString(declaration).trim()
|
||||
val renderedDeclaration = FirRenderer.noAnnotationBodiesAccessorAndArguments().renderElementAsString(declaration).trim()
|
||||
print(renderedDeclaration)
|
||||
print(" from $scope")
|
||||
println(" [id: ${counter.getIndex(declaration.symbol)}]")
|
||||
|
||||
Reference in New Issue
Block a user