[VISUALIZER] Fix class literals rendering

This commit is contained in:
Ivan Kylchik
2021-02-19 19:59:54 +03:00
committed by TeamCityServer
parent fb654ce09b
commit c94a4e7baf
3 changed files with 21 additions and 2 deletions
@@ -293,6 +293,10 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
jetWhenEntry.firstOfTypeWithRender<FirWhenBranch>(jetWhenEntry.expression) { this.result.typeRef }
super.visitWhenEntry(jetWhenEntry)
}
override fun visitClassLiteralExpression(expression: KtClassLiteralExpression) {
expression.firstOfTypeWithRender<FirGetClassCall>()
}
}
inner class FirRenderer : FirVisitor<Unit, StringBuilder>() {
@@ -623,6 +627,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
if (fir is FirClass) {
data.append(fir.classKind.name.toLowerCaseAsciiOnly().replace("_", " ")).append(" ")
data.append(fir.symbol.classId.asString().removeCurrentFilePackage())
renderListInTriangles(fir.typeParameters, data)
if (fir.superTypeRefs.any { it.render() != "kotlin/Any" }) {
data.append(": ")
fir.superTypeRefs.joinTo(data, separator = ", ") { typeRef -> typeRef.render() }
@@ -664,6 +669,10 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
}
}
override fun visitGetClassCall(getClassCall: FirGetClassCall, data: StringBuilder) {
getClassCall.argument.accept(this, data)
}
private fun AbstractFirBasedSymbol<*>.isLocalDeclaration(): Boolean {
return when (val fir = this.fir) {
is FirConstructor -> {