From 325b152efa00435ac2469d2c78226fc5b511382d Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Fri, 20 Oct 2023 15:10:18 +0200 Subject: [PATCH] [FIR generator] Remove unused class `ImplementationWithArg` --- ...stractFirTreeImplementationConfigurator.kt | 14 ---------- .../tree/generator/model/Implementation.kt | 28 +------------------ .../configureInterfacesAndAbstractClasses.kt | 8 ++---- .../InterfaceAndAbstractClassConfigurator.kt | 5 +--- 4 files changed, 4 insertions(+), 51 deletions(-) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt index 8c60caa83e3..fe944af6c62 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt @@ -27,7 +27,6 @@ abstract class AbstractFirTreeImplementationConfigurator { } ?: Implementation(element, name) val context = ImplementationContext(implementation) context.apply(config) - implementation.updateMutabilityAccordingParents() elementsWithImpl += element return implementation } @@ -77,19 +76,6 @@ abstract class AbstractFirTreeImplementationConfigurator { return implementation.getField(name) } - inner class ParentsHolder { - operator fun plusAssign(parent: Implementation) { - implementation.addParent(parent) - } - - operator fun plusAssign(parent: ImplementationWithArg) { - implementation.addParent(parent.implementation, parent.argument) - parent.argument?.let { useTypes(it) } - } - } - - val parents = ParentsHolder() - fun optInToInternals() { implementation.requiresOptIn = true } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt index 20ed9f63c02..53ee5933413 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt @@ -7,18 +7,8 @@ package org.jetbrains.kotlin.fir.tree.generator.model import org.jetbrains.kotlin.generators.tree.* -class ImplementationWithArg( - val implementation: Implementation, - val argument: Importable? -) : FieldContainer by implementation, ImplementationKindOwner by implementation { - val element: Element get() = implementation.element -} - class Implementation(val element: Element, val name: String?) : FieldContainer, ImplementationKindOwner { - private val _parents = mutableListOf() - val parents: List get() = _parents - - override val allParents: List get() = listOf(element) + parents + override val allParents: List get() = listOf(element) val isDefault = name == null override val typeName = name ?: (element.typeName + "Impl") @@ -80,26 +70,10 @@ class Implementation(val element: Element, val name: String?) : FieldContainer, override val transformableChildren: List get() = walkableChildren.filter { it.isMutable } - fun addParent(parent: Implementation, arg: Importable? = null) { - _parents += ImplementationWithArg(parent, arg) - } - override fun get(fieldName: String): FieldWithDefault? { return allFields.firstOrNull { it.name == fieldName } } - fun updateMutabilityAccordingParents() { - for (parent in parents) { - for (field in allFields) { - val fieldFromParent = parent[field.name] ?: continue - field.isMutable = field.isMutable || fieldFromParent.isMutable - if (field.isMutable && field.customSetter == null) { - field.withGetter = false - } - } - } - } - val fieldsWithoutDefault by lazy { allFields.filter { it.defaultValueInImplementation == null } } val fieldsWithDefault by lazy { allFields.filter { it.defaultValueInImplementation != null } } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/configureInterfacesAndAbstractClasses.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/configureInterfacesAndAbstractClasses.kt index b5ecf386775..f84a1e1e395 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/configureInterfacesAndAbstractClasses.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/configureInterfacesAndAbstractClasses.kt @@ -6,17 +6,13 @@ package org.jetbrains.kotlin.fir.tree.generator.util import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder -import org.jetbrains.kotlin.fir.tree.generator.model.* +import org.jetbrains.kotlin.fir.tree.generator.model.Implementation import org.jetbrains.kotlin.generators.tree.ImplementationKindOwner -import org.jetbrains.kotlin.generators.tree.ImplementationKind import org.jetbrains.kotlin.generators.tree.InterfaceAndAbstractClassConfigurator private class FirInterfaceAndAbstractClassConfigurator(builder: AbstractFirTreeBuilder) : InterfaceAndAbstractClassConfigurator() { - override val elements = (builder.elements + builder.elements.flatMap { it.allImplementations }).map { it.origin } - - override val ImplementationKindOwner.origin: ImplementationKindOwner - get() = if (this is ImplementationWithArg) implementation else this + override val elements: List = (builder.elements + builder.elements.flatMap { it.allImplementations }) override fun shouldBeFinalClass(element: ImplementationKindOwner, allParents: Set): Boolean = element is Implementation && element !in allParents diff --git a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/InterfaceAndAbstractClassConfigurator.kt b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/InterfaceAndAbstractClassConfigurator.kt index 99c77cc934b..241b3fac0f0 100644 --- a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/InterfaceAndAbstractClassConfigurator.kt +++ b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/InterfaceAndAbstractClassConfigurator.kt @@ -18,16 +18,13 @@ abstract class InterfaceAndAbstractClassConfigurator { get() = element.allParents.map(::NodeImpl) override val origin: NodeImpl - get() = if (element.origin == element) this else NodeImpl(element.origin) + get() = this override fun equals(other: Any?): Boolean = other is NodeImpl && element == other.element override fun hashCode(): Int = element.hashCode() } - protected open val ImplementationKindOwner.origin: ImplementationKindOwner - get() = this - /** * The list of elements of the tree to infer their [ImplementationKind]. */