[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:
committed by
Space Team
parent
d5394db185
commit
a995c522f7
@@ -11,7 +11,6 @@ runtimeOnly.extendsFrom(compileOnly)
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation(project(":generators"))
|
implementation(project(":generators"))
|
||||||
implementation(project(":generators:tree-generator-common"))
|
implementation(project(":generators:tree-generator-common"))
|
||||||
implementation(project(":core:compiler.common"))
|
|
||||||
implementation(project(":compiler:util"))
|
implementation(project(":compiler:util"))
|
||||||
implementation("com.squareup:kotlinpoet:1.11.0")
|
implementation("com.squareup:kotlinpoet:1.11.0")
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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.tree
|
||||||
import org.jetbrains.kotlin.ir.generator.Packages.types
|
import org.jetbrains.kotlin.ir.generator.Packages.types
|
||||||
import org.jetbrains.kotlin.ir.generator.Packages.visitors
|
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 {
|
object Packages {
|
||||||
const val tree = "org.jetbrains.kotlin.ir"
|
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.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||||
import org.jetbrains.kotlin.descriptors.ValueClassRepresentation
|
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.AbstractTreeBuilder
|
||||||
import org.jetbrains.kotlin.ir.generator.config.ElementConfig
|
import org.jetbrains.kotlin.ir.generator.config.ElementConfig
|
||||||
import org.jetbrains.kotlin.ir.generator.config.ElementConfig.Category.*
|
import org.jetbrains.kotlin.ir.generator.config.ElementConfig.Category.*
|
||||||
|
|||||||
+3
-3
@@ -5,9 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.generator.config
|
package org.jetbrains.kotlin.ir.generator.config
|
||||||
|
|
||||||
import org.jetbrains.kotlin.ir.generator.util.TypeRef
|
import org.jetbrains.kotlin.generators.tree.TypeRef
|
||||||
import org.jetbrains.kotlin.ir.generator.util.TypeVariable
|
import org.jetbrains.kotlin.generators.tree.TypeVariable
|
||||||
import org.jetbrains.kotlin.ir.generator.util.type
|
import org.jetbrains.kotlin.generators.tree.type
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
import kotlin.properties.PropertyDelegateProvider
|
import kotlin.properties.PropertyDelegateProvider
|
||||||
import kotlin.properties.ReadOnlyProperty
|
import kotlin.properties.ReadOnlyProperty
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.ir.generator.config
|
|||||||
import com.squareup.kotlinpoet.CodeBlock
|
import com.squareup.kotlinpoet.CodeBlock
|
||||||
import com.squareup.kotlinpoet.PropertySpec
|
import com.squareup.kotlinpoet.PropertySpec
|
||||||
import com.squareup.kotlinpoet.TypeSpec
|
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.BASE_PACKAGE
|
||||||
import org.jetbrains.kotlin.ir.generator.util.*
|
import org.jetbrains.kotlin.ir.generator.util.*
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.ir.generator.model
|
package org.jetbrains.kotlin.ir.generator.model
|
||||||
|
|
||||||
import com.squareup.kotlinpoet.CodeBlock
|
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.ElementConfig
|
||||||
import org.jetbrains.kotlin.ir.generator.config.FieldConfig
|
import org.jetbrains.kotlin.ir.generator.config.FieldConfig
|
||||||
import org.jetbrains.kotlin.ir.generator.util.*
|
import org.jetbrains.kotlin.ir.generator.util.*
|
||||||
|
|||||||
+1
-2
@@ -5,10 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.generator.model
|
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.config.*
|
||||||
import org.jetbrains.kotlin.ir.generator.elementBaseType
|
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.UnsafeCastFunction
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.castAll
|
import org.jetbrains.kotlin.utils.addToStdlib.castAll
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.partitionIsInstance
|
import org.jetbrains.kotlin.utils.addToStdlib.partitionIsInstance
|
||||||
|
|||||||
+1
-1
@@ -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.elementTransformerType
|
||||||
import org.jetbrains.kotlin.ir.generator.elementVisitorType
|
import org.jetbrains.kotlin.ir.generator.elementVisitorType
|
||||||
import org.jetbrains.kotlin.ir.generator.model.*
|
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 org.jetbrains.kotlin.ir.generator.util.tryParameterizedBy
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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.GeneratedFile
|
||||||
import org.jetbrains.kotlin.ir.generator.util.parameterizedByIfAny
|
import org.jetbrains.kotlin.ir.generator.util.parameterizedByIfAny
|
||||||
import org.jetbrains.kotlin.ir.generator.util.tryParameterizedBy
|
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.util.capitalizeDecapitalize.capitalizeAsciiOnly
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.applyIf
|
import org.jetbrains.kotlin.utils.addToStdlib.applyIf
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.ir.generator.print
|
package org.jetbrains.kotlin.ir.generator.print
|
||||||
|
|
||||||
import com.squareup.kotlinpoet.*
|
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.config.ElementConfigOrRef
|
||||||
import org.jetbrains.kotlin.ir.generator.model.Element
|
import org.jetbrains.kotlin.ir.generator.model.Element
|
||||||
import org.jetbrains.kotlin.ir.generator.model.Element.Companion.elementName2typeName
|
import org.jetbrains.kotlin.ir.generator.model.Element.Companion.elementName2typeName
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(project(":core:compiler.common"))
|
api(project(":core:compiler.common"))
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
+9
-7
@@ -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.
|
* 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 org.jetbrains.kotlin.types.Variance
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
@@ -110,9 +108,13 @@ class TypeVariable(
|
|||||||
) : NamedTypeParameterRef(name)
|
) : NamedTypeParameterRef(name)
|
||||||
|
|
||||||
fun <P : TypeParameterRef> KClass<*>.asRef(): ClassRef<P> {
|
fun <P : TypeParameterRef> KClass<*>.asRef(): ClassRef<P> {
|
||||||
val poet = this.asClassName()
|
val qualifiedName = this.qualifiedName ?: error("$this doesn't have qualified name and thus cannot be converted to ClassRef")
|
||||||
val kind = if (this.java.isInterface) TypeKind.Interface else TypeKind.Class
|
val kind = if (java.isInterface) TypeKind.Interface else TypeKind.Class
|
||||||
return ClassRef(kind, poet.packageName, *poet.simpleNames.toTypedArray())
|
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>()
|
inline fun <reified T : Any> type() = T::class.asRef<PositionTypeParameterRef>()
|
||||||
Reference in New Issue
Block a user