[Test] Implement handler which dumps overrides tree of specified classes
This commit is contained in:
committed by
TeamCityServer
parent
4299794de2
commit
523d37b0f5
@@ -54,6 +54,8 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
val renderCallableFqNames: Boolean,
|
||||
val renderDeclarationResolvePhase: Boolean,
|
||||
val renderAnnotation: Boolean,
|
||||
val renderBodies: Boolean = true,
|
||||
val renderPropertyAccessors: Boolean = true,
|
||||
) {
|
||||
object Normal : RenderMode(
|
||||
renderLambdaBodies = true,
|
||||
@@ -86,6 +88,16 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
renderDeclarationResolvePhase = true,
|
||||
renderAnnotation = true,
|
||||
)
|
||||
|
||||
object NoBodies : RenderMode(
|
||||
renderLambdaBodies = false,
|
||||
renderCallArguments = false,
|
||||
renderCallableFqNames = false,
|
||||
renderDeclarationResolvePhase = false,
|
||||
renderAnnotation = false,
|
||||
renderBodies = false,
|
||||
renderPropertyAccessors = false,
|
||||
)
|
||||
}
|
||||
|
||||
private val printer = Printer(builder)
|
||||
@@ -442,6 +454,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
override fun visitProperty(property: FirProperty) {
|
||||
visitVariable(property)
|
||||
if (property.isLocal) return
|
||||
if (!mode.renderPropertyAccessors) return
|
||||
println()
|
||||
pushIndent()
|
||||
property.getter?.accept(this)
|
||||
@@ -543,14 +556,17 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
anonymousInitializer.body?.renderBody()
|
||||
}
|
||||
|
||||
private fun FirBlock.renderBody(additionalStatements: List<FirStatement> = emptyList()) = when (this) {
|
||||
is FirLazyBlock -> {
|
||||
println(" { LAZY_BLOCK }")
|
||||
}
|
||||
else -> renderInBraces {
|
||||
for (statement in additionalStatements + statements) {
|
||||
statement.accept(this@FirRenderer)
|
||||
println()
|
||||
private fun FirBlock.renderBody(additionalStatements: List<FirStatement> = emptyList()) {
|
||||
if (!mode.renderBodies) return
|
||||
when (this) {
|
||||
is FirLazyBlock -> {
|
||||
println(" { LAZY_BLOCK }")
|
||||
}
|
||||
else -> renderInBraces {
|
||||
for (statement in additionalStatements + statements) {
|
||||
statement.accept(this@FirRenderer)
|
||||
println()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
sealed class FirDeclarationOrigin(val fromSupertypes: Boolean = false) {
|
||||
sealed class FirDeclarationOrigin(private val displayName: String? = null, val fromSupertypes: Boolean = false) {
|
||||
object Source : FirDeclarationOrigin()
|
||||
object Library : FirDeclarationOrigin()
|
||||
object BuiltIns : FirDeclarationOrigin()
|
||||
@@ -18,7 +18,11 @@ sealed class FirDeclarationOrigin(val fromSupertypes: Boolean = false) {
|
||||
object IntersectionOverride : FirDeclarationOrigin(fromSupertypes = true)
|
||||
object Delegated : FirDeclarationOrigin()
|
||||
|
||||
class Plugin(val key: FirPluginKey) : FirDeclarationOrigin()
|
||||
class Plugin(val key: FirPluginKey) : FirDeclarationOrigin(displayName = "Plugin[$key]")
|
||||
|
||||
override fun toString(): String {
|
||||
return displayName ?: this::class.simpleName!!
|
||||
}
|
||||
}
|
||||
|
||||
abstract class FirPluginKey
|
||||
|
||||
Reference in New Issue
Block a user