[FIR/IR generator] Refactor element parents
- Move `elementParents` and `otherParents` properties to `AbstractElement` - Use `elementParents` instead of `parentRefs` where needed
This commit is contained in:
committed by
Space Team
parent
33994d419d
commit
5798021e4b
+2
-5
@@ -22,11 +22,8 @@ class Element(
|
||||
override val fields: MutableSet<Field>,
|
||||
val additionalFactoryMethodParameters: MutableList<Field>,
|
||||
) : AbstractElement<Element, Field>() {
|
||||
var elementParents: List<ElementRef> = emptyList()
|
||||
var otherParents: List<ClassRef<*>> = emptyList()
|
||||
|
||||
override val parentRefs: List<ElementOrRef>
|
||||
get() = elementParents
|
||||
override var elementParents: List<ElementRef> = emptyList()
|
||||
override var otherParents: List<ClassRef<*>> = emptyList()
|
||||
|
||||
override val allFields: List<Field>
|
||||
get() = fields.toList()
|
||||
|
||||
+2
-2
@@ -40,7 +40,7 @@ fun printElements(generationPath: File, model: Model) = sequence {
|
||||
)
|
||||
addTypeVariables(element.params.map { it.toPoet() })
|
||||
|
||||
val (classes, interfaces) = (element.elementParents + element.otherParents).partition { it.typeKind == TypeKind.Class }
|
||||
val (classes, interfaces) = element.parentRefs.partition { it.typeKind == TypeKind.Class }
|
||||
classes.singleOrNull()?.let {
|
||||
superclass(it.toPoet())
|
||||
}
|
||||
@@ -77,7 +77,7 @@ fun printElements(generationPath: File, model: Model) = sequence {
|
||||
}.build())
|
||||
}
|
||||
|
||||
val isRootElement = element.elementParents.isEmpty()
|
||||
val isRootElement = element.isRootElement
|
||||
val acceptMethodName = "accept"
|
||||
val transformMethodName = "transform"
|
||||
if (element.accept) {
|
||||
|
||||
+2
-2
@@ -13,6 +13,7 @@ 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)
|
||||
@@ -68,7 +69,6 @@ fun TypeVariable.toPoet() = TypeVariableName(
|
||||
|
||||
val ClassOrElementRef.typeKind: TypeKind
|
||||
get() = when (this) {
|
||||
is GenericElementRef<*, *> -> element.kind!!.typeKind
|
||||
is GenericElementOrRef<*, *> -> element.kind!!.typeKind
|
||||
is ClassRef<*> -> kind
|
||||
else -> error("Unexpected type: $this")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user