diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt index a8520e6fd14..214dbd8de69 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt @@ -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 + 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 = 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 diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt index c3813c82c87..33b09f11ff2 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt @@ -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)