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
@@ -10,6 +10,8 @@ import org.jetbrains.kotlin.fir.backend.createFilesWithGeneratedDeclarations
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.extensions.generatedMembers
import org.jetbrains.kotlin.fir.extensions.generatedNestedClassifiers
import org.jetbrains.kotlin.fir.renderer.FirClassMemberRenderer
import org.jetbrains.kotlin.fir.renderer.FirPackageDirectiveRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
@@ -37,7 +39,10 @@ class FirDumpHandler(
addAll(info.session.createFilesWithGeneratedDeclarations())
}
val renderer = FirRendererWithGeneratedDeclarations(info.session, builderForModule)
val renderer = FirRenderer(builderForModule).with(
packageDirectiveRenderer = FirPackageDirectiveRenderer(),
classMemberRenderer = FirClassMemberRendererWithGeneratedDeclarations(info.session)
)
allFiles.forEach {
renderer.renderElementAsString(it)
}
@@ -52,21 +57,14 @@ class FirDumpHandler(
assertions.assertEqualsToFile(expectedFile, actualText, message = { "Content is not equal" })
}
private class FirRendererWithGeneratedDeclarations(
val session: FirSession,
builder: StringBuilder,
) : FirRenderer(builder, modeWithPackageDirective) {
companion object {
val modeWithPackageDirective = RenderMode.Normal.copy(renderPackageDirective = true)
}
override fun renderClassDeclarations(regularClass: FirRegularClass) {
private class FirClassMemberRendererWithGeneratedDeclarations(val session: FirSession) : FirClassMemberRenderer() {
override fun render(regularClass: FirRegularClass) {
val allDeclarations = buildList {
addAll(regularClass.declarations)
addAll(regularClass.generatedMembers(session))
addAll(regularClass.generatedNestedClassifiers(session))
}
allDeclarations.renderDeclarations()
render(allDeclarations)
}
}
}
@@ -136,7 +136,10 @@ class FirScopeDumpHandler(testServices: TestServices) : FirAnalysisHandler(testS
private fun SmartPrinter.printInfo(declaration: FirCallableDeclaration, scope: FirTypeScope, counter: SymbolCounter) {
print("[${declaration.origin}]: ")
print(declaration.render(FirRenderer.RenderMode.NoBodies).trim())
val renderedDeclaration = FirRenderer(mode = FirRenderer.RenderMode.NoBodies).with(
annotationRenderer = null, bodyRenderer = null
).renderElementAsString(declaration).trim()
print(renderedDeclaration)
print(" from $scope")
println(" [id: ${counter.getIndex(declaration.symbol)}]")
}