Fir2Ir: make Fir2IrLazyClass a DeserializableClass

This commit is contained in:
Georgy Bronnikov
2021-12-22 18:55:45 +03:00
committed by Alexander Udalov
parent 0012ba79e1
commit ae158e4c5b
@@ -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<FirRegularClass, IrClass>, IrMaybeDeserializedClass, Fir2IrComponents by components {
) : IrClass(), AbstractFir2IrLazyDeclaration<FirRegularClass, IrClass>,
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)
}
}