[FIR2IR] Move initialization of Fir2IrComponentsStorage into its constructor

This commit is contained in:
Dmitriy Novozhilov
2023-08-25 13:58:05 +03:00
committed by Space Team
parent 3e330241b4
commit cb0d61309a
2 changed files with 33 additions and 46 deletions
@@ -10,41 +10,54 @@ import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator
import org.jetbrains.kotlin.fir.backend.generators.CallAndReferenceGenerator
import org.jetbrains.kotlin.fir.backend.generators.DelegatedMemberGenerator
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.signaturer.FirBasedSignatureComposer
import org.jetbrains.kotlin.ir.IrLock
import org.jetbrains.kotlin.ir.declarations.IrFactory
import org.jetbrains.kotlin.ir.linkage.IrProvider
import org.jetbrains.kotlin.ir.util.KotlinMangler
import org.jetbrains.kotlin.ir.util.SymbolTable
class Fir2IrComponentsStorage(
override val session: FirSession,
override val scopeSession: ScopeSession,
override val symbolTable: SymbolTable,
override val irFactory: IrFactory,
override val signatureComposer: FirBasedSignatureComposer,
override val extensions: Fir2IrExtensions,
override val configuration: Fir2IrConfiguration,
override val visibilityConverter: Fir2IrVisibilityConverter,
moduleDescriptor: FirModuleDescriptor,
commonMemberStorage: Fir2IrCommonMemberStorage,
irMangler: KotlinMangler.IrMangler,
specialSymbolProvider: Fir2IrSpecialSymbolProvider,
initializedIrBuiltIns: IrBuiltInsOverFir?
) : Fir2IrComponents {
override val signatureComposer: FirBasedSignatureComposer = commonMemberStorage.firSignatureComposer
override val symbolTable: SymbolTable = commonMemberStorage.symbolTable
override lateinit var converter: Fir2IrConverter
override val converter: Fir2IrConverter = Fir2IrConverter(moduleDescriptor, this)
override lateinit var classifierStorage: Fir2IrClassifierStorage
override lateinit var declarationStorage: Fir2IrDeclarationStorage
override val classifierStorage: Fir2IrClassifierStorage = Fir2IrClassifierStorage(this, commonMemberStorage)
override val declarationStorage: Fir2IrDeclarationStorage = Fir2IrDeclarationStorage(this, moduleDescriptor, commonMemberStorage)
override lateinit var irBuiltIns: IrBuiltInsOverFir
override lateinit var builtIns: Fir2IrBuiltIns
override lateinit var irProviders: List<IrProvider>
override val irBuiltIns: IrBuiltInsOverFir = initializedIrBuiltIns ?: IrBuiltInsOverFir(
this, configuration.languageVersionSettings, moduleDescriptor, irMangler
)
override lateinit var typeConverter: Fir2IrTypeConverter
override lateinit var visibilityConverter: Fir2IrVisibilityConverter
override val builtIns: Fir2IrBuiltIns = Fir2IrBuiltIns(this, specialSymbolProvider)
override val irProviders: List<IrProvider> = listOf(FirIrProvider(this))
override lateinit var annotationGenerator: AnnotationGenerator
override lateinit var callGenerator: CallAndReferenceGenerator
override lateinit var fakeOverrideGenerator: FakeOverrideGenerator
override lateinit var delegatedMemberGenerator: DelegatedMemberGenerator
override val typeConverter: Fir2IrTypeConverter = Fir2IrTypeConverter(this)
override lateinit var annotationsFromPluginRegistrar: Fir2IrAnnotationsFromPluginRegistrar
private val conversionScope = Fir2IrConversionScope(configuration)
val fir2IrVisitor: Fir2IrVisitor = Fir2IrVisitor(this, conversionScope)
override val annotationGenerator: AnnotationGenerator = AnnotationGenerator(this)
override val callGenerator: CallAndReferenceGenerator = CallAndReferenceGenerator(this, fir2IrVisitor, conversionScope)
override val fakeOverrideGenerator: FakeOverrideGenerator = FakeOverrideGenerator(this, conversionScope)
override val delegatedMemberGenerator: DelegatedMemberGenerator = DelegatedMemberGenerator(this)
override val annotationsFromPluginRegistrar: Fir2IrAnnotationsFromPluginRegistrar = Fir2IrAnnotationsFromPluginRegistrar(this)
override val lock: IrLock
get() = symbolTable.lock
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.symbols.Fir2IrConstructorSymbol
import org.jetbrains.kotlin.fir.symbols.Fir2IrSimpleFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.lazyDeclarationResolver
import org.jetbrains.kotlin.fir.types.coneTypeOrNull
import org.jetbrains.kotlin.ir.PsiIrFileEntry
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.declarations.*
@@ -548,46 +547,21 @@ class Fir2IrConverter(
session.lazyDeclarationResolver.disableLazyResolveContractChecks()
val moduleDescriptor = FirModuleDescriptor(session, kotlinBuiltIns)
val components = Fir2IrComponentsStorage(
session,
scopeSession,
commonMemberStorage.symbolTable,
irFactory,
commonMemberStorage.firSignatureComposer,
fir2IrExtensions,
fir2IrConfiguration,
session, scopeSession, irFactory, fir2IrExtensions, fir2IrConfiguration, visibilityConverter,
moduleDescriptor, commonMemberStorage, irMangler, specialSymbolProvider, initializedIrBuiltIns
)
val converter = Fir2IrConverter(moduleDescriptor, components)
components.converter = converter
components.classifierStorage = Fir2IrClassifierStorage(components, commonMemberStorage)
components.delegatedMemberGenerator = DelegatedMemberGenerator(components)
components.declarationStorage = Fir2IrDeclarationStorage(components, moduleDescriptor, commonMemberStorage)
components.visibilityConverter = visibilityConverter
components.typeConverter = Fir2IrTypeConverter(components)
val irBuiltIns = initializedIrBuiltIns ?: IrBuiltInsOverFir(
components, fir2IrConfiguration.languageVersionSettings, moduleDescriptor, irMangler
)
components.irBuiltIns = irBuiltIns
val conversionScope = Fir2IrConversionScope(components.configuration)
val fir2irVisitor = Fir2IrVisitor(components, conversionScope)
components.builtIns = Fir2IrBuiltIns(components, specialSymbolProvider)
components.annotationGenerator = AnnotationGenerator(components)
components.fakeOverrideGenerator = FakeOverrideGenerator(components, conversionScope)
components.callGenerator = CallAndReferenceGenerator(components, fir2irVisitor, conversionScope)
components.irProviders = listOf(FirIrProvider(components))
components.annotationsFromPluginRegistrar = Fir2IrAnnotationsFromPluginRegistrar(components)
fir2IrExtensions.registerDeclarations(commonMemberStorage.symbolTable)
val irModuleFragment = IrModuleFragmentImpl(moduleDescriptor, irBuiltIns)
val irModuleFragment = IrModuleFragmentImpl(moduleDescriptor, components.irBuiltIns)
val allFirFiles = buildList {
addAll(firFiles)
addAll(session.createFilesWithGeneratedDeclarations())
}
converter.runSourcesConversion(
allFirFiles, irModuleFragment, fir2irVisitor, runPreCacheBuiltinClasses = initializedIrBuiltIns == null
components.converter.runSourcesConversion(
allFirFiles, irModuleFragment, components.fir2IrVisitor, runPreCacheBuiltinClasses = initializedIrBuiltIns == null
)
return Fir2IrResult(irModuleFragment, components, moduleDescriptor)