FirRenderer: get rid of direct Visitor usages
This commit is contained in:
@@ -83,8 +83,8 @@ val FirContextReceiver.labelName: Name? get() = customLabelName ?: labelNameFrom
|
||||
fun FirElement.renderWithType(mode: FirRenderer.RenderMode = FirRenderer.RenderMode.Normal): String = buildString {
|
||||
append(this@renderWithType)
|
||||
append(": ")
|
||||
this@renderWithType.accept(FirRenderer(this, mode).Visitor())
|
||||
FirRenderer(this, mode).renderElementAsString(this@renderWithType)
|
||||
}
|
||||
|
||||
fun FirElement.render(mode: FirRenderer.RenderMode = FirRenderer.RenderMode.Normal): String =
|
||||
buildString { this@render.accept(FirRenderer(this, mode).Visitor()) }
|
||||
FirRenderer(mode = mode).renderElementAsString(this)
|
||||
|
||||
@@ -46,4 +46,8 @@ open class FirPrinter(builder: StringBuilder) {
|
||||
popIndent()
|
||||
println(rightBrace)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return printer.toString()
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,28 @@ open class FirRenderer private constructor(
|
||||
components: FirComponentsImpl
|
||||
) : FirPrinter(builder) {
|
||||
|
||||
constructor(builder: StringBuilder, mode: RenderMode = RenderMode.Normal) : this(builder, mode, FirComponentsImpl())
|
||||
companion object {
|
||||
private val visibilitiesToRenderEffectiveSet = setOf(
|
||||
Visibilities.Private, Visibilities.PrivateToThis, Visibilities.Internal,
|
||||
Visibilities.Protected, Visibilities.Public, Visibilities.Local
|
||||
)
|
||||
}
|
||||
|
||||
constructor(builder: StringBuilder = StringBuilder(), mode: RenderMode = RenderMode.Normal) : this(builder, mode, FirComponentsImpl())
|
||||
|
||||
fun renderElementAsString(element: FirElement): String {
|
||||
element.accept(visitor)
|
||||
return toString()
|
||||
}
|
||||
|
||||
fun renderAsCallableDeclarationString(callableDeclaration: FirCallableDeclaration): String {
|
||||
visitor.visitCallableDeclaration(callableDeclaration)
|
||||
return toString()
|
||||
}
|
||||
|
||||
fun renderMemberDeclarationClass(firClass: FirClass) {
|
||||
visitor.visitMemberDeclaration(firClass)
|
||||
}
|
||||
|
||||
private class FirComponentsImpl : FirRendererComponents {
|
||||
override var annotationRenderer: FirAnnotationRenderer? = null
|
||||
@@ -54,13 +75,6 @@ open class FirRenderer private constructor(
|
||||
override lateinit var printer: FirPrinter
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val visibilitiesToRenderEffectiveSet = setOf(
|
||||
Visibilities.Private, Visibilities.PrivateToThis, Visibilities.Internal,
|
||||
Visibilities.Protected, Visibilities.Public, Visibilities.Local
|
||||
)
|
||||
}
|
||||
|
||||
data class RenderMode(
|
||||
val renderCallArguments: Boolean,
|
||||
val renderCallableFqNames: Boolean,
|
||||
@@ -334,7 +348,7 @@ open class FirRenderer private constructor(
|
||||
rValue.accept(visitor)
|
||||
}
|
||||
|
||||
inner class Visitor : FirVisitorVoid() {
|
||||
inner class Visitor internal constructor() : FirVisitorVoid() {
|
||||
|
||||
override fun visitElement(element: FirElement) {
|
||||
element.acceptChildren(this)
|
||||
|
||||
Reference in New Issue
Block a user