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) { private fun FlowContent.generate(whileLoop: FirWhileLoop) {
iline { iline {
generateLabel(whileLoop)
keyword("while ") keyword("while ")
+"(" +"("
generate(whileLoop.condition) 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) { private fun FlowContent.generate(expression: FirExpression) {
exprType(expression.typeRef) { exprType(expression.typeRef) {
when (expression) { when (expression) {
@@ -1105,6 +1114,11 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
+" = " +" = "
generate(expression.expression) generate(expression.expression)
} }
is FirLambdaArgumentExpression -> {
keyword("lambda")
+" = "
generate(expression.expression)
}
is FirTypeOperatorCall -> generate(expression) is FirTypeOperatorCall -> generate(expression)
is FirOperatorCall -> generate(expression) is FirOperatorCall -> generate(expression)
else -> inlineUnsupported(expression) else -> inlineUnsupported(expression)
@@ -1190,6 +1204,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
private fun FlowContent.generate(anonymousFunction: FirAnonymousFunction, isStatement: Boolean) { private fun FlowContent.generate(anonymousFunction: FirAnonymousFunction, isStatement: Boolean) {
generateMultiLineExpression(isStatement) { generateMultiLineExpression(isStatement) {
iline { iline {
generateLabel(anonymousFunction)
keyword("fun ") keyword("fun ")
generateReceiver(anonymousFunction.receiverTypeRef) generateReceiver(anonymousFunction.receiverTypeRef)