[FIR generator] Print builder property name in generated classes' KDocs

Just like we do when generating the IR tree
This commit is contained in:
Sergej Jaskiewicz
2023-10-19 12:14:48 +02:00
committed by Space Team
parent fa20e401f8
commit 9eacdb3314
164 changed files with 502 additions and 22 deletions
@@ -18,9 +18,10 @@ import kotlin.reflect.KProperty
abstract class AbstractFirTreeBuilder {
companion object {
val baseFirElement = Element(
"Element",
Element.Kind.Other
val baseFirElement: Element = Element(
name = "Element",
propertyName = this::class.qualifiedName + "." + Companion::baseFirElement.name,
kind = Element.Kind.Other
)
}
@@ -43,8 +44,8 @@ abstract class AbstractFirTreeBuilder {
return ElementDelegateProvider(kind, dependencies, isSealed = true, predefinedName = name)
}
private fun createElement(name: String, kind: Element.Kind, vararg dependencies: Element): Element =
Element(name, kind).also {
private fun createElement(name: String, propertyName: String, kind: Element.Kind, vararg dependencies: Element): Element =
Element(name, propertyName, kind).also {
if (dependencies.isEmpty()) {
it.elementParents.add(ElementRef(baseFirElement))
}
@@ -56,10 +57,11 @@ abstract class AbstractFirTreeBuilder {
private fun createSealedElement(
name: String,
propertyName: String,
kind: Element.Kind,
vararg dependencies: Element,
): Element {
return createElement(name, kind, *dependencies).apply {
return createElement(name, propertyName, kind, *dependencies).apply {
isSealed = true
}
}
@@ -82,11 +84,12 @@ abstract class AbstractFirTreeBuilder {
thisRef: AbstractFirTreeBuilder,
prop: KProperty<*>
): ReadOnlyProperty<Any?, Element> {
val path = thisRef::class.qualifiedName + "." + prop.name
val name = predefinedName ?: prop.name.replaceFirstChar { it.uppercaseChar() }
val element = if (isSealed) {
createSealedElement(name, kind, *dependencies)
createSealedElement(name, path, kind, *dependencies)
} else {
createElement(name, kind, *dependencies)
createElement(name, path, kind, *dependencies)
}
return DummyDelegate(element)
}
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.generators.tree.*
import org.jetbrains.kotlin.generators.tree.ElementOrRef as GenericElementOrRef
import org.jetbrains.kotlin.generators.tree.ElementRef as GenericElementRef
class Element(override val name: String, kind: Kind) : AbstractElement<Element, Field>() {
class Element(override val name: String, override val propertyName: String, kind: Kind) : AbstractElement<Element, Field>() {
companion object {
private val allowedKinds = setOf(
ImplementationKind.Interface,
@@ -39,7 +39,7 @@ fun SmartPrinter.printElement(element: Element) {
}
}
printKDoc(kDoc)
printKDoc(element.extendedKDoc())
print("${kind!!.title} $type")
print(typeParameters())
val parentRefs = element.parentRefs