[FIR2IR] Extract logic of IR declarations generation into separate component. Part 17
Move creation of Fir2IrLazyConstructor into Fir2IrLazyDeclarationsGenerator
This commit is contained in:
committed by
Space Team
parent
b9fd78d906
commit
0d942d2564
+2
-10
@@ -397,16 +397,7 @@ class Fir2IrDeclarationStorage(
|
||||
callablesGenerator.createIrConstructor(fir, parent as IrClass, predefinedOrigin = origin)
|
||||
},
|
||||
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
|
||||
val symbol = Fir2IrConstructorSymbol(signature)
|
||||
val irConstructor = fir.convertWithOffsets { startOffset, endOffset ->
|
||||
symbolTable.declareConstructor(signature, { symbol }) {
|
||||
Fir2IrLazyConstructor(
|
||||
components, startOffset, endOffset, declarationOrigin, fir, symbol
|
||||
).apply {
|
||||
parent = lazyParent
|
||||
}
|
||||
}
|
||||
}
|
||||
val irConstructor = lazyDeclarationsGenerator.createIrLazyConstructor(fir, signature, declarationOrigin, lazyParent)
|
||||
constructorCache[fir] = irConstructor
|
||||
// NB: this is needed to prevent recursions in case of self bounds
|
||||
(irConstructor as Fir2IrLazyConstructor).prepareTypeParameters()
|
||||
@@ -415,6 +406,7 @@ class Fir2IrDeclarationStorage(
|
||||
) as IrConstructorSymbol
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------ properties ------------------------------------
|
||||
|
||||
fun getOrCreateIrProperty(
|
||||
|
||||
+16
-4
@@ -9,17 +9,16 @@ import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
||||
import org.jetbrains.kotlin.fir.backend.convertWithOffsets
|
||||
import org.jetbrains.kotlin.fir.backend.irOrigin
|
||||
import org.jetbrains.kotlin.fir.backend.isStubPropertyForPureField
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.dispatchReceiverClassLookupTagOrNull
|
||||
import org.jetbrains.kotlin.fir.isSubstitutionOrIntersectionOverride
|
||||
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyClass
|
||||
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyConstructor
|
||||
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyProperty
|
||||
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazySimpleFunction
|
||||
import org.jetbrains.kotlin.fir.originalForSubstitutionOverride
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
@@ -90,6 +89,19 @@ class Fir2IrLazyDeclarationsGenerator(val components: Fir2IrComponents) : Fir2Ir
|
||||
return irProperty
|
||||
}
|
||||
|
||||
fun createIrLazyConstructor(
|
||||
fir: FirConstructor,
|
||||
signature: IdSignature,
|
||||
declarationOrigin: IrDeclarationOrigin,
|
||||
lazyParent: IrDeclarationParent,
|
||||
): IrConstructor = fir.convertWithOffsets { startOffset, endOffset ->
|
||||
symbolTable.declareConstructor(signature, { Fir2IrConstructorSymbol(signature) }) { symbol ->
|
||||
Fir2IrLazyConstructor(components, startOffset, endOffset, declarationOrigin, fir, symbol).apply {
|
||||
parent = lazyParent
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun createIrLazyClass(
|
||||
firClass: FirRegularClass,
|
||||
irParent: IrDeclarationParent,
|
||||
|
||||
@@ -15,12 +15,12 @@ import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isExternal
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInline
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.lazyVar
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.isAnnotationClass
|
||||
import org.jetbrains.kotlin.ir.util.parentClassOrNull
|
||||
@@ -35,7 +35,7 @@ class Fir2IrLazyConstructor(
|
||||
override val endOffset: Int,
|
||||
override var origin: IrDeclarationOrigin,
|
||||
override val fir: FirConstructor,
|
||||
override val symbol: Fir2IrConstructorSymbol,
|
||||
override val symbol: IrConstructorSymbol,
|
||||
) : IrConstructor(), AbstractFir2IrLazyDeclaration<FirConstructor>, Fir2IrTypeParametersContainer,
|
||||
Fir2IrComponents by components {
|
||||
init {
|
||||
|
||||
Reference in New Issue
Block a user