[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
|
||||
|
||||
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.FieldConfig
|
||||
import org.jetbrains.kotlin.ir.generator.util.*
|
||||
@@ -25,7 +25,7 @@ class Element(
|
||||
var visitorParent: ElementRef? = null
|
||||
var transformerReturnType: Element? = null
|
||||
val targetKind = config.typeKind
|
||||
var kind: Kind? = null
|
||||
var kind: ImplementationKind? = null
|
||||
val typeName
|
||||
get() = elementName2typeName(name)
|
||||
val allParents: List<ClassOrElementRef>
|
||||
@@ -51,15 +51,6 @@ class Element(
|
||||
|
||||
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 {
|
||||
fun elementName2typeName(name: String) = "Ir" + name.replaceFirstChar(Char::uppercaseChar)
|
||||
}
|
||||
|
||||
+3
-2
@@ -5,6 +5,7 @@
|
||||
|
||||
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.util.Node
|
||||
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
|
||||
if (isClass) {
|
||||
check(element.targetKind != TypeKind.Interface) { element }
|
||||
element.kind = Element.Kind.AbstractClass
|
||||
element.kind = ImplementationKind.AbstractClass
|
||||
} else {
|
||||
element.kind = Element.Kind.Interface
|
||||
element.kind = ImplementationKind.Interface
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-5
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.ir.generator.print
|
||||
|
||||
import com.squareup.kotlinpoet.*
|
||||
import org.jetbrains.kotlin.generators.tree.ImplementationKind
|
||||
import org.jetbrains.kotlin.generators.tree.TypeKind
|
||||
import org.jetbrains.kotlin.ir.generator.BASE_PACKAGE
|
||||
import org.jetbrains.kotlin.ir.generator.elementTransformerType
|
||||
@@ -28,11 +29,11 @@ fun printElements(generationPath: File, model: Model) = sequence {
|
||||
}.apply {
|
||||
addModifiers(
|
||||
when (element.kind) {
|
||||
Element.Kind.SealedClass -> listOf(KModifier.SEALED)
|
||||
Element.Kind.SealedInterface -> listOf(KModifier.SEALED)
|
||||
Element.Kind.AbstractClass -> listOf(KModifier.ABSTRACT)
|
||||
Element.Kind.FinalClass -> listOf(KModifier.FINAL)
|
||||
Element.Kind.OpenClass -> listOf(KModifier.OPEN)
|
||||
ImplementationKind.SealedClass -> listOf(KModifier.SEALED)
|
||||
ImplementationKind.SealedInterface -> listOf(KModifier.SEALED)
|
||||
ImplementationKind.AbstractClass -> listOf(KModifier.ABSTRACT)
|
||||
ImplementationKind.FinalClass -> listOf(KModifier.FINAL)
|
||||
ImplementationKind.OpenClass -> listOf(KModifier.OPEN)
|
||||
else -> emptyList()
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user