[FIR generator] Move Importable interface to common module

This is a step towards commonizing the code generator between
FIR and IR: KT-61970
This commit is contained in:
Sergej Jaskiewicz
2023-09-04 19:34:21 +02:00
committed by Space Team
parent ec9cb8beb6
commit 7a6bffaabb
19 changed files with 39 additions and 2 deletions
+1
View File
@@ -242,6 +242,7 @@
# UNKNOWN: /generators/protobufCompare/
/generators/test-generator/ "Kotlin Compiler Core" "Kotlin JVM" "Kotlin JS" "Kotlin Native" "Kotlin Wasm"
/generators/tests/ "Kotlin Compiler Core" "Kotlin JVM" "Kotlin JS" "Kotlin Native" "Kotlin Wasm"
/generators/tree-generator-common/ "Kotlin Compiler Core" "Kotlin JVM" "Kotlin JS" "Kotlin Native" "Kotlin Wasm"
/generators/wasm/ "Kotlin Wasm"
/gradle/ "Kotlin Build Infrastructure"
@@ -10,6 +10,7 @@ runtimeOnly.extendsFrom(compileOnly)
dependencies {
implementation(project(":generators"))
implementation(project(":generators:tree-generator-common"))
implementation(project(":core:compiler.common"))
implementation(project(":compiler:frontend.common"))
implementation(project(":compiler:fir:cones"))
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.tree.generator.context
import org.jetbrains.kotlin.fir.tree.generator.model.*
import org.jetbrains.kotlin.utils.DummyDelegate
import org.jetbrains.kotlin.generators.tree.Importable
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.tree.generator.context
import org.jetbrains.kotlin.fir.tree.generator.model.*
import org.jetbrains.kotlin.generators.tree.Importable
abstract class AbstractFieldConfigurator<T : AbstractFirTreeBuilder>(private val builder: T) {
inner class ConfigureContext(val element: Element) {
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.tree.generator.constructClassLikeTypeImport
import org.jetbrains.kotlin.fir.tree.generator.model.*
import org.jetbrains.kotlin.fir.tree.generator.printer.call
import org.jetbrains.kotlin.fir.tree.generator.standardClassIdsType
import org.jetbrains.kotlin.generators.tree.Importable
abstract class AbstractFirTreeImplementationConfigurator {
private val elementsWithImpl = mutableSetOf<Element>()
@@ -5,6 +5,8 @@
package org.jetbrains.kotlin.fir.tree.generator.model
import org.jetbrains.kotlin.generators.tree.Importable
private const val DEFAULT_BUILDER_PACKAGE = "org.jetbrains.kotlin.fir.tree.builder"
sealed class Builder : FieldContainer, Importable {
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.tree.generator.model
import org.jetbrains.kotlin.fir.tree.generator.printer.BASE_PACKAGE
import org.jetbrains.kotlin.fir.tree.generator.printer.typeWithArguments
import org.jetbrains.kotlin.fir.tree.generator.util.set
import org.jetbrains.kotlin.generators.tree.Importable
interface KindOwner : Importable {
var kind: Implementation.Kind?
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.tree.generator.model
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder
import org.jetbrains.kotlin.fir.tree.generator.context.type
import org.jetbrains.kotlin.fir.tree.generator.printer.typeWithArguments
import org.jetbrains.kotlin.generators.tree.Importable
// ----------- Simple field -----------
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.tree.generator.model
import org.jetbrains.kotlin.fir.tree.generator.printer.typeWithArguments
import org.jetbrains.kotlin.generators.tree.Importable
sealed class Field : Importable {
abstract val name: String
@@ -5,6 +5,8 @@
package org.jetbrains.kotlin.fir.tree.generator.model
import org.jetbrains.kotlin.generators.tree.Importable
class ImplementationWithArg(
val implementation: Implementation,
val argument: Importable?
@@ -5,6 +5,8 @@
package org.jetbrains.kotlin.fir.tree.generator.model
import org.jetbrains.kotlin.generators.tree.Importable
data class Type(override val packageName: String?, override val type: String, val firType: Boolean = false) : Importable {
val arguments = mutableListOf<String>()
}
@@ -9,7 +9,7 @@ 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.model.Field
import org.jetbrains.kotlin.fir.tree.generator.model.Implementation.Kind
import org.jetbrains.kotlin.fir.tree.generator.model.Importable
import org.jetbrains.kotlin.generators.tree.Importable
import org.jetbrains.kotlin.fir.tree.generator.pureAbstractElementType
import org.jetbrains.kotlin.fir.tree.generator.util.get
import org.jetbrains.kotlin.utils.SmartPrinter
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.tree.generator.printer
import org.jetbrains.kotlin.fir.tree.generator.model.*
import org.jetbrains.kotlin.fir.tree.generator.model.Implementation.Kind
import org.jetbrains.kotlin.fir.tree.generator.pureAbstractElementType
import org.jetbrains.kotlin.generators.tree.Importable
import org.jetbrains.kotlin.utils.SmartPrinter
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
import org.jetbrains.kotlin.utils.withIndent
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.tree.generator.firImplementationDetailType
import org.jetbrains.kotlin.fir.tree.generator.model.*
import org.jetbrains.kotlin.fir.tree.generator.model.Implementation.Kind
import org.jetbrains.kotlin.fir.tree.generator.pureAbstractElementType
import org.jetbrains.kotlin.generators.tree.Importable
import java.io.File
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
@@ -10,6 +10,7 @@ runtimeOnly.extendsFrom(compileOnly)
dependencies {
implementation(project(":generators"))
implementation(project(":generators:tree-generator-common"))
implementation(project(":core:compiler.common"))
implementation(project(":compiler:util"))
implementation("com.squareup:kotlinpoet:1.11.0")
@@ -0,0 +1,4 @@
## Common code for the FIR and IR tree generators
The [FIR](../../compiler/fir/tree/tree-generator) and [IR](../../compiler/ir/ir.tree/tree-generator) tree generators, although quite
different, share some common logic. This logic is stored here in this module.
@@ -0,0 +1,15 @@
plugins {
kotlin("jvm")
id("jps-compatible")
}
dependencies {
implementation(project(":core:compiler.common"))
}
sourceSets {
"main" {
projectDefault()
}
"test" {}
}
@@ -3,7 +3,7 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.tree.generator.model
package org.jetbrains.kotlin.generators.tree
interface Importable {
val type: String
+1
View File
@@ -191,6 +191,7 @@ include ":kotlin-imports-dumper-compiler-plugin",
":generators",
":generators:ide-iml-to-gradle-generator",
":generators:test-generator",
":generators:tree-generator-common",
":tools:kotlinp",
":kotlin-build-tools-enum-compat",
":kotlin-gradle-compiler-types",