[IR generator] Factor out TypeRef 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-08 18:11:59 +02:00
committed by Space Team
parent d5394db185
commit a995c522f7
12 changed files with 21 additions and 21 deletions
@@ -11,7 +11,6 @@ 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")
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.ir.generator.Packages.symbols
import org.jetbrains.kotlin.ir.generator.Packages.tree
import org.jetbrains.kotlin.ir.generator.Packages.types
import org.jetbrains.kotlin.ir.generator.Packages.visitors
import org.jetbrains.kotlin.ir.generator.util.type
import org.jetbrains.kotlin.generators.tree.type
object Packages {
const val tree = "org.jetbrains.kotlin.ir"
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.descriptors.ValueClassRepresentation
import org.jetbrains.kotlin.generators.tree.TypeKind
import org.jetbrains.kotlin.generators.tree.*
import org.jetbrains.kotlin.ir.generator.config.AbstractTreeBuilder
import org.jetbrains.kotlin.ir.generator.config.ElementConfig
import org.jetbrains.kotlin.ir.generator.config.ElementConfig.Category.*
@@ -5,9 +5,9 @@
package org.jetbrains.kotlin.ir.generator.config
import org.jetbrains.kotlin.ir.generator.util.TypeRef
import org.jetbrains.kotlin.ir.generator.util.TypeVariable
import org.jetbrains.kotlin.ir.generator.util.type
import org.jetbrains.kotlin.generators.tree.TypeRef
import org.jetbrains.kotlin.generators.tree.TypeVariable
import org.jetbrains.kotlin.generators.tree.type
import org.jetbrains.kotlin.types.Variance
import kotlin.properties.PropertyDelegateProvider
import kotlin.properties.ReadOnlyProperty
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.ir.generator.config
import com.squareup.kotlinpoet.CodeBlock
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.TypeSpec
import org.jetbrains.kotlin.generators.tree.TypeKind
import org.jetbrains.kotlin.generators.tree.*
import org.jetbrains.kotlin.ir.generator.BASE_PACKAGE
import org.jetbrains.kotlin.ir.generator.util.*
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.ir.generator.model
import com.squareup.kotlinpoet.CodeBlock
import org.jetbrains.kotlin.generators.tree.ImplementationKind
import org.jetbrains.kotlin.generators.tree.*
import org.jetbrains.kotlin.ir.generator.config.ElementConfig
import org.jetbrains.kotlin.ir.generator.config.FieldConfig
import org.jetbrains.kotlin.ir.generator.util.*
@@ -5,10 +5,9 @@
package org.jetbrains.kotlin.ir.generator.model
import org.jetbrains.kotlin.generators.tree.TypeKind
import org.jetbrains.kotlin.generators.tree.*
import org.jetbrains.kotlin.ir.generator.config.*
import org.jetbrains.kotlin.ir.generator.elementBaseType
import org.jetbrains.kotlin.ir.generator.util.*
import org.jetbrains.kotlin.utils.addToStdlib.UnsafeCastFunction
import org.jetbrains.kotlin.utils.addToStdlib.castAll
import org.jetbrains.kotlin.utils.addToStdlib.partitionIsInstance
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.ir.generator.BASE_PACKAGE
import org.jetbrains.kotlin.ir.generator.elementTransformerType
import org.jetbrains.kotlin.ir.generator.elementVisitorType
import org.jetbrains.kotlin.ir.generator.model.*
import org.jetbrains.kotlin.ir.generator.util.TypeRefWithNullability
import org.jetbrains.kotlin.generators.tree.TypeRefWithNullability
import org.jetbrains.kotlin.ir.generator.util.tryParameterizedBy
import java.io.File
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.ir.generator.model.Model
import org.jetbrains.kotlin.ir.generator.util.GeneratedFile
import org.jetbrains.kotlin.ir.generator.util.parameterizedByIfAny
import org.jetbrains.kotlin.ir.generator.util.tryParameterizedBy
import org.jetbrains.kotlin.ir.generator.util.type
import org.jetbrains.kotlin.generators.tree.type
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
import org.jetbrains.kotlin.utils.addToStdlib.applyIf
import java.io.File
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.ir.generator.print
import com.squareup.kotlinpoet.*
import org.jetbrains.kotlin.generators.tree.TypeKind
import org.jetbrains.kotlin.generators.tree.*
import org.jetbrains.kotlin.ir.generator.config.ElementConfigOrRef
import org.jetbrains.kotlin.ir.generator.model.Element
import org.jetbrains.kotlin.ir.generator.model.Element.Companion.elementName2typeName
@@ -4,7 +4,7 @@ plugins {
}
dependencies {
implementation(project(":core:compiler.common"))
api(project(":core:compiler.common"))
}
sourceSets {
@@ -1,12 +1,10 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.ir.generator.util
package org.jetbrains.kotlin.generators.tree
import com.squareup.kotlinpoet.asClassName
import org.jetbrains.kotlin.generators.tree.TypeKind
import org.jetbrains.kotlin.types.Variance
import java.util.*
import kotlin.reflect.KClass
@@ -110,9 +108,13 @@ class TypeVariable(
) : NamedTypeParameterRef(name)
fun <P : TypeParameterRef> KClass<*>.asRef(): ClassRef<P> {
val poet = this.asClassName()
val kind = if (this.java.isInterface) TypeKind.Interface else TypeKind.Class
return ClassRef(kind, poet.packageName, *poet.simpleNames.toTypedArray())
val qualifiedName = this.qualifiedName ?: error("$this doesn't have qualified name and thus cannot be converted to ClassRef")
val kind = if (java.isInterface) TypeKind.Interface else TypeKind.Class
val parts = qualifiedName.split('.')
val indexWhereClassNameStarts = parts.indexOfFirst { it.first().isUpperCase() }
val packageName = parts.take(indexWhereClassNameStarts).joinToString(separator = ".")
val simpleNames = parts.drop(indexWhereClassNameStarts)
return ClassRef(kind, packageName, *simpleNames.toTypedArray())
}
inline fun <reified T : Any> type() = T::class.asRef<PositionTypeParameterRef>()