[FIR/IR generator] Factor out adding pure abstract element as parent
This commit is contained in:
committed by
Space Team
parent
5798021e4b
commit
04c5ac0eb6
+1
-1
@@ -23,7 +23,7 @@ class Element(
|
||||
val additionalFactoryMethodParameters: MutableList<Field>,
|
||||
) : AbstractElement<Element, Field>() {
|
||||
override var elementParents: List<ElementRef> = emptyList()
|
||||
override var otherParents: List<ClassRef<*>> = emptyList()
|
||||
override var otherParents: MutableList<ClassRef<*>> = mutableListOf()
|
||||
|
||||
override val allFields: List<Field>
|
||||
get() = fields.toList()
|
||||
|
||||
+2
-10
@@ -44,7 +44,7 @@ fun config2model(config: Config): Model {
|
||||
|
||||
val rootElement = replaceElementRefs(config, ec2el)
|
||||
configureInterfacesAndAbstractClasses(elements)
|
||||
addAbstractElement(elements)
|
||||
addPureAbstractElement(elements, elementBaseType)
|
||||
markLeaves(elements)
|
||||
configureDescriptorApiAnnotation(elements)
|
||||
processFieldOverrides(elements)
|
||||
@@ -120,7 +120,7 @@ private fun replaceElementRefs(config: Config, mapping: Map<ElementConfig, Eleme
|
||||
.map { transform(it) }
|
||||
.partitionIsInstance<TypeRef, ElementRef>()
|
||||
el.elementParents = elParents.takeIf { it.isNotEmpty() || el == rootEl.element } ?: listOf(rootEl)
|
||||
el.otherParents = otherParents.castAll<ClassRef<*>>().toList()
|
||||
el.otherParents = otherParents.castAll<ClassRef<*>>().toMutableList()
|
||||
el.visitorParent = ec.visitorParent?.let(::transform) as GenericElementRef<Element, Field>?
|
||||
el.transformerReturnType = (ec.transformerReturnType?.let(::transform) as GenericElementRef<Element, Field>?)?.element
|
||||
|
||||
@@ -158,14 +158,6 @@ private fun markLeaves(elements: List<Element>) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun addAbstractElement(elements: List<Element>) {
|
||||
for (el in elements) {
|
||||
if (el.needPureAbstractElement) {
|
||||
el.otherParents += elementBaseType
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun configureDescriptorApiAnnotation(elements: List<Element>) {
|
||||
for (el in elements) {
|
||||
for (field in el.fields) {
|
||||
|
||||
+1
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.ir.generator.elementTransformerType
|
||||
import org.jetbrains.kotlin.ir.generator.elementVisitorType
|
||||
import org.jetbrains.kotlin.ir.generator.model.*
|
||||
import org.jetbrains.kotlin.generators.tree.TypeRefWithNullability
|
||||
import org.jetbrains.kotlin.generators.tree.typeKind
|
||||
import org.jetbrains.kotlin.ir.generator.util.tryParameterizedBy
|
||||
import java.io.File
|
||||
import org.jetbrains.kotlin.generators.tree.ElementRef as GenericElementRef
|
||||
|
||||
-6
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.ir.generator.model.Element.Companion.elementName2typ
|
||||
import org.jetbrains.kotlin.ir.generator.util.*
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import org.jetbrains.kotlin.generators.tree.ElementRef as GenericElementRef
|
||||
import org.jetbrains.kotlin.generators.tree.ElementOrRef as GenericElementOrRef
|
||||
|
||||
fun Element.toPoet() = ClassName(packageName, typeName)
|
||||
fun Element.toPoetSelfParameterized() = toPoet().parameterizedByIfAny(poetTypeVariables)
|
||||
@@ -67,8 +66,3 @@ fun TypeVariable.toPoet() = TypeVariableName(
|
||||
}
|
||||
)
|
||||
|
||||
val ClassOrElementRef.typeKind: TypeKind
|
||||
get() = when (this) {
|
||||
is GenericElementOrRef<*, *> -> element.kind!!.typeKind
|
||||
is ClassRef<*> -> kind
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user