diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt index ea495aaa55d..dd3e088f95b 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt @@ -265,6 +265,8 @@ class IrBuiltInsOverFir( override val kPropertyClass: IrClassSymbol get() = kProperty.klass private val kClass by loadClass(StandardClassIds.KClass) override val kClassClass: IrClassSymbol get() = kClass.klass + private val kType by loadClass(StandardClassIds.KType) + override val kTypeClass: IrClassSymbol get() = kType.klass private val kProperty0 by loadClass(StandardClassIds.KProperty0) override val kProperty0Class: IrClassSymbol get() = kProperty0.klass private val kProperty1 by loadClass(StandardClassIds.KProperty1) diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrInterpreterEnvironment.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrInterpreterEnvironment.kt index f6dc8265d73..c95090e4c63 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrInterpreterEnvironment.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrInterpreterEnvironment.kt @@ -37,11 +37,7 @@ class IrInterpreterEnvironment( internal val kTypeParameterClass by lazy { irBuiltIns.kClassClass.getIrClassOfReflectionFromList("typeParameters")!! } internal val kParameterClass by lazy { irBuiltIns.kFunctionClass.getIrClassOfReflectionFromList("parameters")!! } internal val kTypeProjectionClass by lazy { kTypeClass.getIrClassOfReflectionFromList("arguments")!! } - internal val kTypeClass: IrClassSymbol by lazy { - // here we use fallback to `Any` because `KType` cannot be found on JS/Native by this way - // but still this class is used to represent type arguments in interpreter - irBuiltIns.kClassClass.getIrClassOfReflectionFromList("supertypes") ?: irBuiltIns.anyClass - } + internal val kTypeClass: IrClassSymbol by lazy { irBuiltIns.kTypeClass } init { mapOfObjects[irBuiltIns.unitClass] = Common(irBuiltIns.unitClass.owner) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrBuiltInsOverDescriptors.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrBuiltInsOverDescriptors.kt index 7926a1fe17a..243d2d098d9 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrBuiltInsOverDescriptors.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrBuiltInsOverDescriptors.kt @@ -340,6 +340,7 @@ class IrBuiltInsOverDescriptors( override val kCallableClass = builtIns.kCallable.toIrSymbol() override val kPropertyClass = builtIns.kProperty.toIrSymbol() override val kClassClass = builtIns.kClass.toIrSymbol() + override val kTypeClass = builtIns.kType.toIrSymbol() override val kProperty0Class = builtIns.kProperty0.toIrSymbol() override val kProperty1Class = builtIns.kProperty1.toIrSymbol() diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt index 99bc4e05702..7f34aec5ffb 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt @@ -83,6 +83,7 @@ abstract class IrBuiltIns { abstract val kCallableClass: IrClassSymbol abstract val kPropertyClass: IrClassSymbol abstract val kClassClass: IrClassSymbol + abstract val kTypeClass: IrClassSymbol abstract val kProperty0Class: IrClassSymbol abstract val kProperty1Class: IrClassSymbol abstract val kProperty2Class: IrClassSymbol diff --git a/core/compiler.common/src/org/jetbrains/kotlin/builtins/StandardNames.kt b/core/compiler.common/src/org/jetbrains/kotlin/builtins/StandardNames.kt index 5e7fe3913df..8b6a674624b 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/builtins/StandardNames.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/builtins/StandardNames.kt @@ -164,6 +164,7 @@ object StandardNames { @JvmField val mutableMapEntry: FqName = mutableMap.child(Name.identifier("MutableEntry")) @JvmField val kClass: FqNameUnsafe = reflect("KClass") + @JvmField val kType: FqNameUnsafe = reflect("KType") @JvmField val kCallable: FqNameUnsafe = reflect("KCallable") @JvmField val kProperty0: FqNameUnsafe = reflect("KProperty0") @JvmField val kProperty1: FqNameUnsafe = reflect("KProperty1") diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/StandardClassIds.kt b/core/compiler.common/src/org/jetbrains/kotlin/name/StandardClassIds.kt index dfffde5c7f8..5a18b5c224b 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/name/StandardClassIds.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/name/StandardClassIds.kt @@ -70,6 +70,7 @@ object StandardClassIds { val KFunction = "KFunction".reflectId() val KClass = "KClass".reflectId() val KCallable = "KCallable".reflectId() + val KType = "KType".reflectId() val Comparable = "Comparable".baseId() val Number = "Number".baseId() diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java index f0734f754d6..d43cacccaed 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java @@ -354,6 +354,12 @@ public abstract class KotlinBuiltIns { return getBuiltInClassByFqName(FqNames.kClass.toSafe()); } + + @NotNull + public ClassDescriptor getKType() { + return getBuiltInClassByFqName(FqNames.kType.toSafe()); + } + @NotNull public ClassDescriptor getKCallable() { return getBuiltInClassByFqName(FqNames.kCallable.toSafe());