[FIR/IR generator] Factor out adding pure abstract element as parent
This commit is contained in:
committed by
Space Team
parent
5798021e4b
commit
04c5ac0eb6
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.tree.generator
|
||||
import org.jetbrains.kotlin.fir.tree.generator.printer.generateElements
|
||||
import org.jetbrains.kotlin.fir.tree.generator.util.configureInterfacesAndAbstractClasses
|
||||
import org.jetbrains.kotlin.fir.tree.generator.util.detectBaseTransformerTypes
|
||||
import org.jetbrains.kotlin.generators.tree.addPureAbstractElement
|
||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
|
||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.collectPreviouslyGeneratedFiles
|
||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.removeExtraFilesFromPreviousGeneration
|
||||
@@ -22,6 +23,7 @@ fun main(args: Array<String>) {
|
||||
detectBaseTransformerTypes(FirTreeBuilder)
|
||||
ImplementationConfigurator.configureImplementations()
|
||||
configureInterfacesAndAbstractClasses(FirTreeBuilder)
|
||||
addPureAbstractElement(FirTreeBuilder.elements, pureAbstractElementType)
|
||||
BuilderConfigurator.configureBuilders()
|
||||
val previouslyGeneratedFiles = collectPreviouslyGeneratedFiles(generationPath)
|
||||
val generatedFiles = generateElements(FirTreeBuilder, generationPath)
|
||||
|
||||
+6
-19
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.tree.generator.printer
|
||||
|
||||
import org.jetbrains.kotlin.fir.tree.generator.model.Element
|
||||
import org.jetbrains.kotlin.fir.tree.generator.model.Field
|
||||
import org.jetbrains.kotlin.fir.tree.generator.pureAbstractElementType
|
||||
import org.jetbrains.kotlin.fir.tree.generator.util.get
|
||||
import org.jetbrains.kotlin.generators.tree.*
|
||||
import org.jetbrains.kotlin.generators.tree.printer.*
|
||||
@@ -42,25 +41,13 @@ fun SmartPrinter.printElement(element: Element) {
|
||||
|
||||
print("${kind!!.title} $type")
|
||||
print(typeParameters())
|
||||
val needPureAbstractElement = this.needPureAbstractElement
|
||||
val superTypesStrings = elementParents.map {
|
||||
// TODO: Factor out
|
||||
var result = it.element.type
|
||||
if (it.args.isNotEmpty()) {
|
||||
result += it.args.values.joinToString(", ", "<", ">") { it.typeWithArguments }
|
||||
}
|
||||
result + it.element.kind.braces()
|
||||
} + otherParents.map { it.type }
|
||||
|
||||
if (superTypesStrings.isNotEmpty() || needPureAbstractElement) {
|
||||
print(" : ")
|
||||
if (needPureAbstractElement) {
|
||||
print("${pureAbstractElementType.type}()")
|
||||
if (superTypesStrings.isNotEmpty()) {
|
||||
print(", ")
|
||||
val parentRefs = element.parentRefs
|
||||
if (parentRefs.isNotEmpty()) {
|
||||
print(
|
||||
parentRefs.sortedBy { it.typeKind }.joinToString(prefix = " : ") { parent ->
|
||||
parent.typeWithArguments + parent.inheritanceClauseParenthesis()
|
||||
}
|
||||
}
|
||||
print(superTypesStrings.joinToString(", "),)
|
||||
)
|
||||
}
|
||||
print(multipleUpperBoundsList())
|
||||
println(" {")
|
||||
|
||||
Reference in New Issue
Block a user