Implement break, continue, init in html fir

This commit is contained in:
Simon Ogorodnik
2019-04-23 04:13:28 +03:00
committed by Mikhail Glukhikh
parent 26119f0403
commit c1a9fee7e1
@@ -21,9 +21,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.ConeSymbol import org.jetbrains.kotlin.fir.symbols.*
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.FirTypePlaceholderProjection import org.jetbrains.kotlin.fir.types.impl.FirTypePlaceholderProjection
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
@@ -1071,6 +1069,30 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
generate(unitExpression.typeRef) generate(unitExpression.typeRef)
} }
private fun FlowContent.generate(breakExpression: FirBreakExpression) {
keyword("break")
span("label") {
+"@"
+(breakExpression.target.labelName ?: "")
}
}
private fun FlowContent.generate(continueExpression: FirContinueExpression) {
keyword("continue")
span("label") {
+"@"
+(continueExpression.target.labelName ?: "")
}
}
private fun FlowContent.generate(initializer: FirAnonymousInitializer) {
iline {
keyword("init")
generateBlockIfAny(initializer.body)
}
}
private fun FlowContent.generate(stringConcatenationCall: FirStringConcatenationCall) { private fun FlowContent.generate(stringConcatenationCall: FirStringConcatenationCall) {
generateList(stringConcatenationCall.arguments, separator = " + ") { generateList(stringConcatenationCall.arguments, separator = " + ") {
generate(it) generate(it)
@@ -1088,6 +1110,8 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
private fun FlowContent.generate(expression: FirExpression) { private fun FlowContent.generate(expression: FirExpression) {
exprType(expression.typeRef) { exprType(expression.typeRef) {
when (expression) { when (expression) {
is FirContinueExpression -> generate(expression)
is FirBreakExpression -> generate(expression)
is FirAnonymousObject -> generate(expression) is FirAnonymousObject -> generate(expression)
is FirUnitExpression -> generate(expression) is FirUnitExpression -> generate(expression)
is FirStringConcatenationCall -> generate(expression) is FirStringConcatenationCall -> generate(expression)
@@ -1258,6 +1282,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
private fun FlowContent.generate(declaration: FirDeclaration) { private fun FlowContent.generate(declaration: FirDeclaration) {
when (declaration) { when (declaration) {
is FirAnonymousInitializer -> generate(declaration)
is FirMemberDeclaration -> generate(declaration) is FirMemberDeclaration -> generate(declaration)
else -> unsupported(declaration) else -> unsupported(declaration)
} }