[FIR/IR generator] Factor out walkableChildren and transformableChildren

This commit is contained in:
Sergej Jaskiewicz
2023-11-14 18:21:08 +01:00
committed by Space Team
parent 13ae129505
commit c6eb7d6c21
9 changed files with 35 additions and 40 deletions
@@ -112,7 +112,6 @@ class FieldWithDefault(val origin: Field) : Field() {
override var withGetter: Boolean = false
override var customSetter: String? = null
override var fromDelegate: Boolean = false
var needAcceptAndTransform: Boolean = true
override val overridenTypes: MutableSet<TypeRefWithNullability>
get() = origin.overridenTypes
@@ -64,12 +64,6 @@ class Implementation(val element: Element, val name: String?) : FieldContainer,
override val hasTransformChildrenMethod: Boolean
get() = true
override val walkableChildren: List<FieldWithDefault>
get() = allFields.filter { it.containsElement && !it.withGetter && it.needAcceptAndTransform }
override val transformableChildren: List<FieldWithDefault>
get() = walkableChildren.filter { it.isMutable }
override fun get(fieldName: String): FieldWithDefault? {
return allFields.firstOrNull { it.name == fieldName }
}
@@ -159,6 +159,7 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
println()
withIndent {
for (field in walkableFields) {
check(field is FieldWithDefault)
when (field.name) {
"explicitReceiver" -> {
val explicitReceiver = implementation["explicitReceiver"]!!
@@ -225,6 +226,7 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
if (!isInterface && !isAbstract) {
printBlock {
for (field in transformableChildren) {
check(field is FieldWithDefault)
when {
field.name == "explicitReceiver" -> {
val explicitReceiver = implementation["explicitReceiver"]!!