[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:
Sergej Jaskiewicz
2023-09-18 20:12:04 +02:00
committed by Space Team
parent 33994d419d
commit 5798021e4b
14 changed files with 48 additions and 40 deletions
@@ -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()
@@ -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) {
@@ -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")
}