From 6fadc5185667e4006549b14e638d274c1855c0f1 Mon Sep 17 00:00:00 2001 From: Wojciech Litewka Date: Thu, 15 Feb 2024 18:37:55 +0100 Subject: [PATCH] [tree generator] Minor: pass model inside ImplementationConfigurator Needed for config across many elements in subsequent commits. ^KT-65773 In Progress --- .../fir/tree/generator/ImplementationConfigurator.kt | 4 ++-- .../src/org/jetbrains/kotlin/fir/tree/generator/Main.kt | 4 +++- .../kotlin/ir/generator/ImplementationConfigurator.kt | 5 +++-- .../tree/config/AbstractImplementationConfigurator.kt | 8 ++++---- .../sir/tree/generator/ImplementationConfigurator.kt | 4 ++-- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index 3b479d33d1e..8072600c966 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.generators.tree.ImplementationKind.OpenClass object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() { - override fun configure() = with(FirTreeBuilder) { + override fun configure(model: Model) = with(FirTreeBuilder) { impl(constructor) { defaultFalse("isPrimary", withGetter = true) } @@ -627,7 +627,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } } - override fun configureAllImplementations() { + override fun configureAllImplementations(model: Model) { configureFieldInAllImplementations( field = "controlFlowGraphReference", implementationPredicate = { it.typeName != "FirAnonymousFunctionImpl" } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt index ff3018715d5..4b3eba0eaa0 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt @@ -6,8 +6,8 @@ package org.jetbrains.kotlin.fir.tree.generator import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder +import org.jetbrains.kotlin.fir.tree.generator.model.Element import org.jetbrains.kotlin.fir.tree.generator.printer.* -import org.jetbrains.kotlin.generators.tree.Model import org.jetbrains.kotlin.generators.tree.printer.generateTree import org.jetbrains.kotlin.utils.bind import java.io.File @@ -15,6 +15,8 @@ import java.io.File internal const val BASE_PACKAGE = "org.jetbrains.kotlin.fir" internal const val VISITOR_PACKAGE = "$BASE_PACKAGE.visitors" +typealias Model = org.jetbrains.kotlin.generators.tree.Model + fun main(args: Array) { val generationPath = args.firstOrNull()?.let { File(it) } ?: File("../../tree/gen").canonicalFile diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/ImplementationConfigurator.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/ImplementationConfigurator.kt index a0d0de2c45f..6089c1317c7 100644 --- a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/ImplementationConfigurator.kt +++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/ImplementationConfigurator.kt @@ -6,14 +6,15 @@ package org.jetbrains.kotlin.ir.generator import org.jetbrains.kotlin.ir.generator.config.AbstractIrTreeImplementationConfigurator +import org.jetbrains.kotlin.ir.generator.model.Element object ImplementationConfigurator : AbstractIrTreeImplementationConfigurator() { - override fun configure(): Unit = with(IrTree) { + override fun configure(model: Model): Unit = with(IrTree) { impl(simpleFunction) impl(property) } - override fun configureAllImplementations() { + override fun configureAllImplementations(model: Model) { // Use configureFieldInAllImplementations to customize certain fields in all implementation classes } } \ No newline at end of file diff --git a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/config/AbstractImplementationConfigurator.kt b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/config/AbstractImplementationConfigurator.kt index 9e8d0edd241..49eaf74419f 100644 --- a/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/config/AbstractImplementationConfigurator.kt +++ b/generators/tree-generator-common/src/org/jetbrains/kotlin/generators/tree/config/AbstractImplementationConfigurator.kt @@ -23,9 +23,9 @@ abstract class AbstractImplementationConfigurator) { - configure() + configure(model) generateDefaultImplementations(model.elements) - configureAllImplementations() + configureAllImplementations(model) } /** @@ -33,7 +33,7 @@ abstract class AbstractImplementationConfigurator) /** * A customization point for batch-applying rules to existing implementations. @@ -41,7 +41,7 @@ abstract class AbstractImplementationConfigurator) /** * Disables generating any implementation classes for [element]. diff --git a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/ImplementationConfigurator.kt b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/ImplementationConfigurator.kt index ca4a0ac11ea..5c2cfcf60e0 100644 --- a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/ImplementationConfigurator.kt +++ b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/ImplementationConfigurator.kt @@ -9,11 +9,11 @@ import org.jetbrains.kotlin.sir.tree.generator.config.AbstractSwiftIrTreeImpleme object ImplementationConfigurator : AbstractSwiftIrTreeImplementationConfigurator() { - override fun configure() = with(SwiftIrTree) { + override fun configure(model: Model) = with(SwiftIrTree) { // Declare custom implementation classes, see org.jetbrains.kotlin.fir.tree.generator.ImplementationConfigurator } - override fun configureAllImplementations() { + override fun configureAllImplementations(model: Model) { // Use configureFieldInAllImplementations to customize certain fields in all implementation classes configureFieldInAllImplementations( field = "parent",