[FIR/IR generator] Add kDoc property to AbstractElement & AbstractField
This commit is contained in:
committed by
Space Team
parent
51325ba630
commit
7e7f4811bd
+2
@@ -30,6 +30,8 @@ class Element(override val name: String, kind: Kind) : AbstractElement<Element,
|
|||||||
override val nullable: Boolean
|
override val nullable: Boolean
|
||||||
get() = false
|
get() = false
|
||||||
|
|
||||||
|
override var kDoc: String? = null
|
||||||
|
|
||||||
override val fields = mutableSetOf<Field>()
|
override val fields = mutableSetOf<Field>()
|
||||||
override val type: String = "Fir$name"
|
override val type: String = "Fir$name"
|
||||||
override val packageName: String = BASE_PACKAGE + kind.packageName.let { if (it.isBlank()) it else "." + it }
|
override val packageName: String = BASE_PACKAGE + kind.packageName.let { if (it.isBlank()) it else "." + it }
|
||||||
|
|||||||
+1
@@ -63,6 +63,7 @@ sealed class Field : AbstractField() {
|
|||||||
}
|
}
|
||||||
copy.fromParent = fromParent
|
copy.fromParent = fromParent
|
||||||
copy.parentHasSeparateTransform = parentHasSeparateTransform
|
copy.parentHasSeparateTransform = parentHasSeparateTransform
|
||||||
|
copy.kDoc = kDoc
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun internalCopy(): Field
|
protected abstract fun internalCopy(): Field
|
||||||
|
|||||||
+1
@@ -39,6 +39,7 @@ fun SmartPrinter.printElement(element: Element) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printKDoc(kDoc)
|
||||||
print("${kind!!.title} $type")
|
print("${kind!!.title} $type")
|
||||||
print(typeParameters())
|
print(typeParameters())
|
||||||
val parentRefs = element.parentRefs
|
val parentRefs = element.parentRefs
|
||||||
|
|||||||
+5
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.tree.generator.printer
|
package org.jetbrains.kotlin.fir.tree.generator.printer
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.model.Field
|
import org.jetbrains.kotlin.fir.tree.generator.model.Field
|
||||||
|
import org.jetbrains.kotlin.generators.tree.printer.printKDoc
|
||||||
import org.jetbrains.kotlin.utils.SmartPrinter
|
import org.jetbrains.kotlin.utils.SmartPrinter
|
||||||
import org.jetbrains.kotlin.utils.withIndent
|
import org.jetbrains.kotlin.utils.withIndent
|
||||||
|
|
||||||
@@ -17,6 +18,10 @@ fun SmartPrinter.printField(
|
|||||||
inConstructor: Boolean = false,
|
inConstructor: Boolean = false,
|
||||||
modifiers: SmartPrinter.() -> Unit = {},
|
modifiers: SmartPrinter.() -> Unit = {},
|
||||||
) {
|
) {
|
||||||
|
if (!override && field.kDoc != null) {
|
||||||
|
println()
|
||||||
|
printKDoc(field.kDoc)
|
||||||
|
}
|
||||||
if (!field.isVal && field.isVolatile) {
|
if (!field.isVal && field.isVolatile) {
|
||||||
println("@Volatile")
|
println("@Volatile")
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-2
@@ -77,7 +77,9 @@ class Element(
|
|||||||
|
|
||||||
val generationCallback = config.generationCallback
|
val generationCallback = config.generationCallback
|
||||||
val propertyName = config.propertyName
|
val propertyName = config.propertyName
|
||||||
val kDoc = config.kDoc
|
|
||||||
|
override val kDoc = config.kDoc
|
||||||
|
|
||||||
val additionalImports: List<Import> = config.additionalImports
|
val additionalImports: List<Import> = config.additionalImports
|
||||||
|
|
||||||
override fun toString() = name
|
override fun toString() = name
|
||||||
@@ -126,7 +128,9 @@ sealed class Field(
|
|||||||
abstract val transformable: Boolean
|
abstract val transformable: Boolean
|
||||||
|
|
||||||
val useInIrFactoryStrategy = config.useFieldInIrFactoryStrategy
|
val useInIrFactoryStrategy = config.useFieldInIrFactoryStrategy
|
||||||
val kdoc = config.kdoc
|
init {
|
||||||
|
kDoc = config.kdoc
|
||||||
|
}
|
||||||
|
|
||||||
val printProperty = config.printProperty
|
val printProperty = config.printProperty
|
||||||
val generationCallback = config.generationCallback
|
val generationCallback = config.generationCallback
|
||||||
|
|||||||
+1
-1
@@ -70,7 +70,7 @@ fun printElements(generationPath: File, model: Model) = sequence {
|
|||||||
addAnnotation(descriptorApiAnnotation)
|
addAnnotation(descriptorApiAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
field.kdoc?.let {
|
field.kDoc?.let {
|
||||||
addKdoc(it)
|
addKdoc(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
@@ -16,6 +16,8 @@ abstract class AbstractElement<Element, Field> : ElementOrRef<Element, Field>, F
|
|||||||
|
|
||||||
abstract val name: String
|
abstract val name: String
|
||||||
|
|
||||||
|
abstract val kDoc: String?
|
||||||
|
|
||||||
abstract val fields: Set<Field>
|
abstract val fields: Set<Field>
|
||||||
|
|
||||||
abstract val params: List<TypeVariable>
|
abstract val params: List<TypeVariable>
|
||||||
|
|||||||
+2
@@ -14,6 +14,8 @@ abstract class AbstractField {
|
|||||||
val nullable: Boolean
|
val nullable: Boolean
|
||||||
get() = typeRef.nullable
|
get() = typeRef.nullable
|
||||||
|
|
||||||
|
var kDoc: String? = null
|
||||||
|
|
||||||
abstract val isVolatile: Boolean
|
abstract val isVolatile: Boolean
|
||||||
|
|
||||||
abstract val isFinal: Boolean
|
abstract val isFinal: Boolean
|
||||||
|
|||||||
+16
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.generators.tree.printer
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.generators.tree.AbstractElement
|
import org.jetbrains.kotlin.generators.tree.AbstractElement
|
||||||
import org.jetbrains.kotlin.generators.tree.ImplementationKind
|
import org.jetbrains.kotlin.generators.tree.ImplementationKind
|
||||||
|
import org.jetbrains.kotlin.utils.SmartPrinter
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The angle bracket-delimited list of type parameters to print, or empty string if the element has no type parameters.
|
* The angle bracket-delimited list of type parameters to print, or empty string if the element has no type parameters.
|
||||||
@@ -51,3 +52,18 @@ val AbstractElement<*, *>.generics: String
|
|||||||
get() = params.takeIf { it.isNotEmpty() }
|
get() = params.takeIf { it.isNotEmpty() }
|
||||||
?.let { it.joinToString(", ", "<", ">") { it.name } }
|
?.let { it.joinToString(", ", "<", ">") { it.name } }
|
||||||
?: ""
|
?: ""
|
||||||
|
|
||||||
|
fun SmartPrinter.printKDoc(kDoc: String?) {
|
||||||
|
if (kDoc == null) return
|
||||||
|
println("/**")
|
||||||
|
for (line in kDoc.lineSequence()) {
|
||||||
|
print(" *")
|
||||||
|
if (line.isBlank()) {
|
||||||
|
println()
|
||||||
|
} else {
|
||||||
|
print(" ")
|
||||||
|
println(line)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println(" */")
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user