[IR generator] Use ImplementationKind instead of Element.Kind
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
af5a93f5ff
commit
00fa09dbf3
+2
-11
@@ -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.TypeKind
|
import org.jetbrains.kotlin.generators.tree.ImplementationKind
|
||||||
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.*
|
||||||
@@ -25,7 +25,7 @@ class Element(
|
|||||||
var visitorParent: ElementRef? = null
|
var visitorParent: ElementRef? = null
|
||||||
var transformerReturnType: Element? = null
|
var transformerReturnType: Element? = null
|
||||||
val targetKind = config.typeKind
|
val targetKind = config.typeKind
|
||||||
var kind: Kind? = null
|
var kind: ImplementationKind? = null
|
||||||
val typeName
|
val typeName
|
||||||
get() = elementName2typeName(name)
|
get() = elementName2typeName(name)
|
||||||
val allParents: List<ClassOrElementRef>
|
val allParents: List<ClassOrElementRef>
|
||||||
@@ -51,15 +51,6 @@ class Element(
|
|||||||
|
|
||||||
override fun toString() = name
|
override fun toString() = name
|
||||||
|
|
||||||
enum class Kind(val typeKind: TypeKind) {
|
|
||||||
FinalClass(TypeKind.Class),
|
|
||||||
OpenClass(TypeKind.Class),
|
|
||||||
AbstractClass(TypeKind.Class),
|
|
||||||
SealedClass(TypeKind.Class),
|
|
||||||
Interface(TypeKind.Interface),
|
|
||||||
SealedInterface(TypeKind.Interface),
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun elementName2typeName(name: String) = "Ir" + name.replaceFirstChar(Char::uppercaseChar)
|
fun elementName2typeName(name: String) = "Ir" + name.replaceFirstChar(Char::uppercaseChar)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.generator.model
|
package org.jetbrains.kotlin.ir.generator.model
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.generators.tree.ImplementationKind
|
||||||
import org.jetbrains.kotlin.generators.tree.TypeKind
|
import org.jetbrains.kotlin.generators.tree.TypeKind
|
||||||
import org.jetbrains.kotlin.generators.util.Node
|
import org.jetbrains.kotlin.generators.util.Node
|
||||||
import org.jetbrains.kotlin.generators.util.solveGraphForClassVsInterface
|
import org.jetbrains.kotlin.generators.util.solveGraphForClassVsInterface
|
||||||
@@ -39,9 +40,9 @@ private fun updateKinds(nodes: List<NodeImpl>, solution: List<Boolean>) {
|
|||||||
val element = nodes[index].element
|
val element = nodes[index].element
|
||||||
if (isClass) {
|
if (isClass) {
|
||||||
check(element.targetKind != TypeKind.Interface) { element }
|
check(element.targetKind != TypeKind.Interface) { element }
|
||||||
element.kind = Element.Kind.AbstractClass
|
element.kind = ImplementationKind.AbstractClass
|
||||||
} else {
|
} else {
|
||||||
element.kind = Element.Kind.Interface
|
element.kind = ImplementationKind.Interface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-5
@@ -6,6 +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.ImplementationKind
|
||||||
import org.jetbrains.kotlin.generators.tree.TypeKind
|
import org.jetbrains.kotlin.generators.tree.TypeKind
|
||||||
import org.jetbrains.kotlin.ir.generator.BASE_PACKAGE
|
import org.jetbrains.kotlin.ir.generator.BASE_PACKAGE
|
||||||
import org.jetbrains.kotlin.ir.generator.elementTransformerType
|
import org.jetbrains.kotlin.ir.generator.elementTransformerType
|
||||||
@@ -28,11 +29,11 @@ fun printElements(generationPath: File, model: Model) = sequence {
|
|||||||
}.apply {
|
}.apply {
|
||||||
addModifiers(
|
addModifiers(
|
||||||
when (element.kind) {
|
when (element.kind) {
|
||||||
Element.Kind.SealedClass -> listOf(KModifier.SEALED)
|
ImplementationKind.SealedClass -> listOf(KModifier.SEALED)
|
||||||
Element.Kind.SealedInterface -> listOf(KModifier.SEALED)
|
ImplementationKind.SealedInterface -> listOf(KModifier.SEALED)
|
||||||
Element.Kind.AbstractClass -> listOf(KModifier.ABSTRACT)
|
ImplementationKind.AbstractClass -> listOf(KModifier.ABSTRACT)
|
||||||
Element.Kind.FinalClass -> listOf(KModifier.FINAL)
|
ImplementationKind.FinalClass -> listOf(KModifier.FINAL)
|
||||||
Element.Kind.OpenClass -> listOf(KModifier.OPEN)
|
ImplementationKind.OpenClass -> listOf(KModifier.OPEN)
|
||||||
else -> emptyList()
|
else -> emptyList()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user