diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt index 87a34b393a0..1ff3b1385c9 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.pipeline import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor +import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.backend.Fir2IrConverter import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions @@ -44,7 +45,9 @@ fun FirSession.convertToIr( FirJvmKotlinMangler(this), JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), - irGeneratorExtensions, true + irGeneratorExtensions, + kotlinBuiltIns = DefaultBuiltIns.Instance, // TODO: consider passing externally + generateSignatures = true, ) } else { return Fir2IrConverter.createModuleFragmentWithoutSignatures( @@ -53,7 +56,8 @@ fun FirSession.convertToIr( FirJvmKotlinMangler(this), JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), - irGeneratorExtensions + irGeneratorExtensions, + kotlinBuiltIns = DefaultBuiltIns.Instance // TODO: consider passing externally ) } } 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 7163b04dae4..592d1bd0dda 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 @@ -9,6 +9,8 @@ import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.KtPsiSourceFileLinesMapping import org.jetbrains.kotlin.KtSourceFileLinesMappingFromLineStartOffsets import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension +import org.jetbrains.kotlin.builtins.DefaultBuiltIns +import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.StandardNames import org.jetbrains.kotlin.config.AnalysisFlags import org.jetbrains.kotlin.config.LanguageFeature @@ -423,13 +425,15 @@ class Fir2IrConverter( visibilityConverter: Fir2IrVisibilityConverter, specialSymbolProvider: Fir2IrSpecialSymbolProvider, irGenerationExtensions: Collection, - generateSignatures: Boolean + generateSignatures: Boolean, + kotlinBuiltIns: KotlinBuiltIns ): Fir2IrResult { if (!generateSignatures) { return createModuleFragmentWithoutSignatures( session, scopeSession, firFiles, languageVersionSettings, fir2IrExtensions, mangler, irMangler, irFactory, - visibilityConverter, specialSymbolProvider, irGenerationExtensions + visibilityConverter, specialSymbolProvider, irGenerationExtensions, + kotlinBuiltIns ) } val signatureComposer = FirBasedSignatureComposer(mangler) @@ -439,7 +443,7 @@ class Fir2IrConverter( session, scopeSession, firFiles, languageVersionSettings, fir2IrExtensions, irMangler, irFactory, visibilityConverter, specialSymbolProvider, irGenerationExtensions, signatureComposer, - symbolTable, generateSignatures = true + symbolTable, generateSignatures = true, kotlinBuiltIns = kotlinBuiltIns ) } @@ -454,7 +458,8 @@ class Fir2IrConverter( irFactory: IrFactory, visibilityConverter: Fir2IrVisibilityConverter, specialSymbolProvider: Fir2IrSpecialSymbolProvider, - irGenerationExtensions: Collection + irGenerationExtensions: Collection, + kotlinBuiltIns: KotlinBuiltIns ): Fir2IrResult { val signatureComposer = FirBasedSignatureComposer(mangler) val signaturer = DescriptorSignatureComposerStub() @@ -463,7 +468,7 @@ class Fir2IrConverter( session, scopeSession, firFiles, languageVersionSettings, fir2IrExtensions, irMangler, irFactory, visibilityConverter, specialSymbolProvider, irGenerationExtensions, signatureComposer, - symbolTable, generateSignatures = false + symbolTable, generateSignatures = false, kotlinBuiltIns = kotlinBuiltIns ) } @@ -480,9 +485,10 @@ class Fir2IrConverter( irGenerationExtensions: Collection, signatureComposer: FirBasedSignatureComposer, symbolTable: SymbolTable, - generateSignatures: Boolean + generateSignatures: Boolean, + kotlinBuiltIns: KotlinBuiltIns ): Fir2IrResult { - val moduleDescriptor = FirModuleDescriptor(session) + val moduleDescriptor = FirModuleDescriptor(session, kotlinBuiltIns) val components = Fir2IrComponentsStorage( session, scopeSession, symbolTable, irFactory, signatureComposer, fir2IrExtensions, generateSignatures ) @@ -501,7 +507,7 @@ class Fir2IrConverter( val irBuiltIns = IrBuiltInsOverFir( components, languageVersionSettings, moduleDescriptor, irMangler, - languageVersionSettings.getFlag(AnalysisFlags.builtInsFromSources) + languageVersionSettings.getFlag(AnalysisFlags.builtInsFromSources) || kotlinBuiltIns !== DefaultBuiltIns.Instance ) components.irBuiltIns = irBuiltIns val conversionScope = Fir2IrConversionScope() diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index bf1f1e9a9e5..12b168a7f2c 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -231,7 +231,7 @@ class Fir2IrDeclarationStorage( // But keep original module descriptor for the fragments coming from parts compiled on the previous incremental step val externalFragmentModuleDescriptor = if (firOrigin == FirDeclarationOrigin.Precompiled) moduleDescriptor - else FirModuleDescriptor(session) + else FirModuleDescriptor(session, moduleDescriptor.builtIns) symbolTable.declareExternalPackageFragment(FirPackageFragmentDescriptor(fqName, externalFragmentModuleDescriptor)) } } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/descriptors/FirModuleDescriptor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/descriptors/FirModuleDescriptor.kt index ab2379da38a..4dee841a05c 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/descriptors/FirModuleDescriptor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/descriptors/FirModuleDescriptor.kt @@ -10,15 +10,16 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.moduleData import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.TargetPlatform -class FirModuleDescriptor(val session: FirSession) : ModuleDescriptor { +class FirModuleDescriptor( + val session: FirSession, override val builtIns: KotlinBuiltIns - get() = DefaultBuiltIns.Instance - +) : ModuleDescriptor { override fun shouldSeeInternalsOf(targetModule: ModuleDescriptor): Boolean { return false } @@ -38,8 +39,8 @@ class FirModuleDescriptor(val session: FirSession) : ModuleDescriptor { TODO("not implemented") } - override val allDependencyModules: List - get() = TODO("not implemented") + override var allDependencyModules: List = emptyList() + override val expectedByModules: List get() = TODO("not implemented") override val allExpectedByModules: Set @@ -61,10 +62,10 @@ class FirModuleDescriptor(val session: FirSession) : ModuleDescriptor { } override fun getName(): Name { - return FIR_MODULE_NAME + return session.moduleData.name } - override val stableName: Name? + override val stableName: Name get() = name override fun acceptVoid(visitor: DeclarationDescriptorVisitor?) { @@ -73,8 +74,4 @@ class FirModuleDescriptor(val session: FirSession) : ModuleDescriptor { override val annotations: Annotations get() = Annotations.EMPTY - - companion object { - val FIR_MODULE_NAME = Name.identifier("module for FIR session") - } } diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt index 7cc7bc238b2..06c4e891c16 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS import org.jetbrains.kotlin.build.report.BuildReporter +import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments @@ -281,7 +282,8 @@ class IncrementalFirJvmCompilerRunner( cycleResult.session.languageVersionSettings, extensions, FirJvmKotlinMangler(cycleResult.session), JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), - irGenerationExtensions + irGenerationExtensions, + kotlinBuiltIns = DefaultBuiltIns.Instance // TODO: consider passing externally ) performanceManager?.notifyIRTranslationFinished() diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt index 77bd93d7b60..0121e1a7868 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor +import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.diagnostics.KtDiagnostic @@ -119,7 +120,8 @@ class FirAnalyzerFacade( FirJvmVisibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), irGeneratorExtensions, - generateSignatures + generateSignatures, + kotlinBuiltIns = DefaultBuiltIns.Instance // TODO: consider passing externally ) } }