Implement break, continue, init in html fir
This commit is contained in:
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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user