[FIR] Replace FIR tree with generated implementation
This commit is contained in:
@@ -18,8 +18,8 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.*
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.symbols.*
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
@@ -268,7 +268,7 @@ class MultiModuleHtmlFirDump(private val outputRoot: File) {
|
||||
require(inModule)
|
||||
|
||||
val dumpOutput = index.files[file] ?: error("No location for ${file.name}")
|
||||
val dumper = HtmlFirDump(LinkResolver(dumpOutput), file.fileSession)
|
||||
val dumper = HtmlFirDump(LinkResolver(dumpOutput), file.session)
|
||||
val builder = StringBuilder()
|
||||
dumper.generate(file, builder)
|
||||
|
||||
@@ -338,9 +338,9 @@ class MultiModuleHtmlFirDump(private val outputRoot: File) {
|
||||
visitElement(valueParameter)
|
||||
}
|
||||
|
||||
override fun visitNamedFunction(namedFunction: FirNamedFunction) {
|
||||
indexDeclaration(namedFunction)
|
||||
visitElement(namedFunction)
|
||||
override fun visitSimpleFunction(simpleFunction: FirSimpleFunction) {
|
||||
indexDeclaration(simpleFunction)
|
||||
visitElement(simpleFunction)
|
||||
}
|
||||
|
||||
override fun visitTypeParameter(typeParameter: FirTypeParameter) {
|
||||
@@ -576,7 +576,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
}
|
||||
}
|
||||
|
||||
generateDeclarations(klass)
|
||||
generateDeclarations(klass.declarations)
|
||||
br
|
||||
|
||||
}
|
||||
@@ -773,14 +773,14 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
private fun FlowContent.generate(memberDeclaration: FirMemberDeclaration) {
|
||||
when (memberDeclaration) {
|
||||
is FirRegularClass -> generate(memberDeclaration)
|
||||
is FirNamedFunction -> generate(memberDeclaration)
|
||||
is FirProperty -> generate(memberDeclaration)
|
||||
is FirSimpleFunction -> generate(memberDeclaration)
|
||||
is FirProperty -> if (memberDeclaration.isLocal) generate(memberDeclaration as FirVariable<*>) else generate(memberDeclaration)
|
||||
is FirConstructor -> generate(memberDeclaration)
|
||||
else -> unsupported(memberDeclaration)
|
||||
}
|
||||
}
|
||||
|
||||
private fun FlowContent.generateTypeParameters(typeParameterContainer: FirTypeParameterContainer) {
|
||||
private fun FlowContent.generateTypeParameters(typeParameterContainer: FirTypeParametersOwner) {
|
||||
if (typeParameterContainer.typeParameters.isEmpty()) return
|
||||
+"<"
|
||||
generateList(typeParameterContainer.typeParameters) {
|
||||
@@ -873,7 +873,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
|
||||
private fun FlowContent.generate(statement: FirStatement) {
|
||||
when (statement) {
|
||||
is FirNamedFunction -> generate(statement)
|
||||
is FirSimpleFunction -> generate(statement)
|
||||
is FirAnonymousObject -> generate(statement, isStatement = true)
|
||||
is FirAnonymousFunction -> generate(statement, isStatement = true)
|
||||
is FirWhileLoop -> generate(statement)
|
||||
@@ -1074,7 +1074,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
|
||||
private fun FlowContent.generate(whileLoop: FirWhileLoop) {
|
||||
iline {
|
||||
generateLabel(whileLoop)
|
||||
generateLabel(whileLoop.label)
|
||||
keyword("while ")
|
||||
+"("
|
||||
generate(whileLoop.condition)
|
||||
@@ -1153,8 +1153,8 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
}
|
||||
}
|
||||
|
||||
private fun FlowContent.generateLabel(labeledElement: FirLabeledElement) {
|
||||
val label = labeledElement.label ?: return
|
||||
private fun FlowContent.generateLabel(label: FirLabel?) {
|
||||
if (label == null) return
|
||||
span("label") {
|
||||
+label.name
|
||||
+"@"
|
||||
@@ -1301,30 +1301,29 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
generate(it)
|
||||
}
|
||||
}
|
||||
generateDeclarations(anonymousObject)
|
||||
generateDeclarations(anonymousObject.declarations)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun FlowContent.generateDeclarations(declarationContainer: FirDeclarationContainer) {
|
||||
if (declarationContainer.declarations.isNotEmpty()) {
|
||||
private fun FlowContent.generateDeclarations(declarations: List<FirDeclaration>) {
|
||||
if (declarations.isNotEmpty()) {
|
||||
+" {"
|
||||
br
|
||||
|
||||
withIdentLevel {
|
||||
for (declaration in declarationContainer.declarations) {
|
||||
for (declaration in declarations) {
|
||||
generate(declaration)
|
||||
line {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
inl()
|
||||
+"}"
|
||||
}
|
||||
}
|
||||
|
||||
private fun FlowContent.generate(function: FirNamedFunction) {
|
||||
private fun FlowContent.generate(function: FirSimpleFunction) {
|
||||
generateMultiLineExpression(isStatement = true) {
|
||||
iline {
|
||||
declarationStatus(function.status)
|
||||
@@ -1365,7 +1364,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
private fun FlowContent.generate(anonymousFunction: FirAnonymousFunction, isStatement: Boolean) {
|
||||
generateMultiLineExpression(isStatement) {
|
||||
iline {
|
||||
generateLabel(anonymousFunction)
|
||||
generateLabel(anonymousFunction.label)
|
||||
keyword("fun ")
|
||||
generateReceiver(anonymousFunction.receiverTypeRef)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user