From ae158e4c5bf264c06d561da335485d85d7c3da21 Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Wed, 22 Dec 2021 18:55:45 +0300 Subject: [PATCH] Fir2Ir: make Fir2IrLazyClass a DeserializableClass --- .../org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt index 8794e9b18ac..fada2638288 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.types.IrSimpleType import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl +import org.jetbrains.kotlin.ir.util.DeserializableClass import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.kotlin.utils.addIfNotNull @@ -40,7 +41,8 @@ class Fir2IrLazyClass( override var origin: IrDeclarationOrigin, override val fir: FirRegularClass, override val symbol: Fir2IrClassSymbol, -) : IrClass(), AbstractFir2IrLazyDeclaration, IrMaybeDeserializedClass, Fir2IrComponents by components { +) : IrClass(), AbstractFir2IrLazyDeclaration, + IrMaybeDeserializedClass, DeserializableClass, Fir2IrComponents by components { init { symbol.bind(this) classifierStorage.preCacheTypeParameters(fir) @@ -227,4 +229,11 @@ class Fir2IrLazyClass( else -> false } } + + private var irLoaded: Boolean? = null + + override fun loadIr(): Boolean { + assert(parent is IrPackageFragment) + return irLoaded ?: extensions.deserializeToplevelClass(this, this) + } }