[IR] Add KType to IrBuiltins

This commit is contained in:
Ivan Kylchik
2023-05-26 13:45:12 +02:00
committed by Space Team
parent 0021a5f655
commit 6f4f06757a
7 changed files with 13 additions and 5 deletions
@@ -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)
@@ -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)
@@ -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()
@@ -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