[FIR2IR] Move initialization of Fir2IrComponentsStorage into its constructor
This commit is contained in:
committed by
Space Team
parent
3e330241b4
commit
cb0d61309a
+28
-15
@@ -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.CallAndReferenceGenerator
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.DelegatedMemberGenerator
|
import org.jetbrains.kotlin.fir.backend.generators.DelegatedMemberGenerator
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
|
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.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.signaturer.FirBasedSignatureComposer
|
import org.jetbrains.kotlin.fir.signaturer.FirBasedSignatureComposer
|
||||||
import org.jetbrains.kotlin.ir.IrLock
|
import org.jetbrains.kotlin.ir.IrLock
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||||
import org.jetbrains.kotlin.ir.linkage.IrProvider
|
import org.jetbrains.kotlin.ir.linkage.IrProvider
|
||||||
|
import org.jetbrains.kotlin.ir.util.KotlinMangler
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
|
|
||||||
class Fir2IrComponentsStorage(
|
class Fir2IrComponentsStorage(
|
||||||
override val session: FirSession,
|
override val session: FirSession,
|
||||||
override val scopeSession: ScopeSession,
|
override val scopeSession: ScopeSession,
|
||||||
override val symbolTable: SymbolTable,
|
|
||||||
override val irFactory: IrFactory,
|
override val irFactory: IrFactory,
|
||||||
override val signatureComposer: FirBasedSignatureComposer,
|
|
||||||
override val extensions: Fir2IrExtensions,
|
override val extensions: Fir2IrExtensions,
|
||||||
override val configuration: Fir2IrConfiguration,
|
override val configuration: Fir2IrConfiguration,
|
||||||
|
override val visibilityConverter: Fir2IrVisibilityConverter,
|
||||||
|
moduleDescriptor: FirModuleDescriptor,
|
||||||
|
commonMemberStorage: Fir2IrCommonMemberStorage,
|
||||||
|
irMangler: KotlinMangler.IrMangler,
|
||||||
|
specialSymbolProvider: Fir2IrSpecialSymbolProvider,
|
||||||
|
initializedIrBuiltIns: IrBuiltInsOverFir?
|
||||||
) : Fir2IrComponents {
|
) : 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 val classifierStorage: Fir2IrClassifierStorage = Fir2IrClassifierStorage(this, commonMemberStorage)
|
||||||
override lateinit var declarationStorage: Fir2IrDeclarationStorage
|
override val declarationStorage: Fir2IrDeclarationStorage = Fir2IrDeclarationStorage(this, moduleDescriptor, commonMemberStorage)
|
||||||
|
|
||||||
override lateinit var irBuiltIns: IrBuiltInsOverFir
|
override val irBuiltIns: IrBuiltInsOverFir = initializedIrBuiltIns ?: IrBuiltInsOverFir(
|
||||||
override lateinit var builtIns: Fir2IrBuiltIns
|
this, configuration.languageVersionSettings, moduleDescriptor, irMangler
|
||||||
override lateinit var irProviders: List<IrProvider>
|
)
|
||||||
|
|
||||||
override lateinit var typeConverter: Fir2IrTypeConverter
|
override val builtIns: Fir2IrBuiltIns = Fir2IrBuiltIns(this, specialSymbolProvider)
|
||||||
override lateinit var visibilityConverter: Fir2IrVisibilityConverter
|
override val irProviders: List<IrProvider> = listOf(FirIrProvider(this))
|
||||||
|
|
||||||
override lateinit var annotationGenerator: AnnotationGenerator
|
override val typeConverter: Fir2IrTypeConverter = Fir2IrTypeConverter(this)
|
||||||
override lateinit var callGenerator: CallAndReferenceGenerator
|
|
||||||
override lateinit var fakeOverrideGenerator: FakeOverrideGenerator
|
|
||||||
override lateinit var delegatedMemberGenerator: DelegatedMemberGenerator
|
|
||||||
|
|
||||||
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
|
override val lock: IrLock
|
||||||
get() = symbolTable.lock
|
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.Fir2IrConstructorSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.Fir2IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.lazyDeclarationResolver
|
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.PsiIrFileEntry
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
@@ -548,46 +547,21 @@ class Fir2IrConverter(
|
|||||||
session.lazyDeclarationResolver.disableLazyResolveContractChecks()
|
session.lazyDeclarationResolver.disableLazyResolveContractChecks()
|
||||||
val moduleDescriptor = FirModuleDescriptor(session, kotlinBuiltIns)
|
val moduleDescriptor = FirModuleDescriptor(session, kotlinBuiltIns)
|
||||||
val components = Fir2IrComponentsStorage(
|
val components = Fir2IrComponentsStorage(
|
||||||
session,
|
session, scopeSession, irFactory, fir2IrExtensions, fir2IrConfiguration, visibilityConverter,
|
||||||
scopeSession,
|
moduleDescriptor, commonMemberStorage, irMangler, specialSymbolProvider, initializedIrBuiltIns
|
||||||
commonMemberStorage.symbolTable,
|
|
||||||
irFactory,
|
|
||||||
commonMemberStorage.firSignatureComposer,
|
|
||||||
fir2IrExtensions,
|
|
||||||
fir2IrConfiguration,
|
|
||||||
)
|
)
|
||||||
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)
|
fir2IrExtensions.registerDeclarations(commonMemberStorage.symbolTable)
|
||||||
|
|
||||||
val irModuleFragment = IrModuleFragmentImpl(moduleDescriptor, irBuiltIns)
|
val irModuleFragment = IrModuleFragmentImpl(moduleDescriptor, components.irBuiltIns)
|
||||||
|
|
||||||
val allFirFiles = buildList {
|
val allFirFiles = buildList {
|
||||||
addAll(firFiles)
|
addAll(firFiles)
|
||||||
addAll(session.createFilesWithGeneratedDeclarations())
|
addAll(session.createFilesWithGeneratedDeclarations())
|
||||||
}
|
}
|
||||||
|
|
||||||
converter.runSourcesConversion(
|
components.converter.runSourcesConversion(
|
||||||
allFirFiles, irModuleFragment, fir2irVisitor, runPreCacheBuiltinClasses = initializedIrBuiltIns == null
|
allFirFiles, irModuleFragment, components.fir2IrVisitor, runPreCacheBuiltinClasses = initializedIrBuiltIns == null
|
||||||
)
|
)
|
||||||
|
|
||||||
return Fir2IrResult(irModuleFragment, components, moduleDescriptor)
|
return Fir2IrResult(irModuleFragment, components, moduleDescriptor)
|
||||||
|
|||||||
Reference in New Issue
Block a user