Support labels in fir html dump

This commit is contained in:
Simon Ogorodnik
2019-04-16 21:31:34 +03:00
committed by Mikhail Glukhikh
parent 541e1addf9
commit a0176fbde5
@@ -1021,6 +1021,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
private fun FlowContent.generate(whileLoop: FirWhileLoop) {
iline {
generateLabel(whileLoop)
keyword("while ")
+"("
generate(whileLoop.condition)
@@ -1075,6 +1076,14 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
}
}
private fun FlowContent.generateLabel(labeledElement: FirLabeledElement) {
val label = labeledElement.label ?: return
span("label") {
+label.name
+"@"
}
}
private fun FlowContent.generate(expression: FirExpression) {
exprType(expression.typeRef) {
when (expression) {
@@ -1105,6 +1114,11 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
+" = "
generate(expression.expression)
}
is FirLambdaArgumentExpression -> {
keyword("lambda")
+" = "
generate(expression.expression)
}
is FirTypeOperatorCall -> generate(expression)
is FirOperatorCall -> generate(expression)
else -> inlineUnsupported(expression)
@@ -1190,6 +1204,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
private fun FlowContent.generate(anonymousFunction: FirAnonymousFunction, isStatement: Boolean) {
generateMultiLineExpression(isStatement) {
iline {
generateLabel(anonymousFunction)
keyword("fun ")
generateReceiver(anonymousFunction.receiverTypeRef)