diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/compilerPipeline.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/compilerPipeline.kt index 75b08ae1e66..94c7db70752 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/compilerPipeline.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/compilerPipeline.kt @@ -130,7 +130,10 @@ fun transformFirToIr( val firResult = FirResult(firOutputs) return firResult.convertToIrAndActualize( fir2IrExtensions, - Fir2IrConfiguration(linkViaSignatures = false), + Fir2IrConfiguration( + languageVersionSettings = moduleStructure.compilerConfiguration.languageVersionSettings, + linkViaSignatures = false + ), IrGenerationExtension.getInstances(moduleStructure.project), signatureComposerCreator = null, irMangler = JsManglerIr, @@ -138,7 +141,6 @@ fun transformFirToIr( visibilityConverter = Fir2IrVisibilityConverter.Default, kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance, diagnosticReporter = diagnosticsReporter, - languageVersionSettings = moduleStructure.compilerConfiguration.languageVersionSettings, fir2IrResultPostCompute = { (this.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = librariesDescriptors } } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt index 4e8ad57671e..c6dcecc0211 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt @@ -154,6 +154,7 @@ object FirKotlinToJvmBytecodeCompiler { val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler) val fir2IrConfiguration = Fir2IrConfiguration( + languageVersionSettings = moduleConfiguration.languageVersionSettings, linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES) ) val fir2IrAndIrActualizerResult = firResult.convertToIrAndActualizeForJvm( @@ -161,7 +162,6 @@ object FirKotlinToJvmBytecodeCompiler { fir2IrConfiguration, irGenerationExtensions, diagnosticsReporter, - moduleConfiguration.languageVersionSettings ) performanceManager?.notifyIRTranslationFinished() diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt index 449785c91cd..54949562e78 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt @@ -232,12 +232,12 @@ fun convertAnalyzedFirToIr( IrGenerationExtension.getInstances(it) } ?: emptyList() val fir2IrConfiguration = Fir2IrConfiguration( + languageVersionSettings = input.configuration.languageVersionSettings, linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES) ) val (irModuleFragment, components, pluginContext, irActualizedResult) = analysisResults.convertToIrAndActualizeForJvm( - extensions, fir2IrConfiguration, irGenerationExtensions, - environment.diagnosticsReporter, input.configuration.languageVersionSettings + extensions, fir2IrConfiguration, irGenerationExtensions, environment.diagnosticsReporter, ) return ModuleCompilerIrBackendInput( 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 3fe248b4315..a4b87399bff 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 @@ -49,7 +49,6 @@ fun FirResult.convertToIrAndActualizeForJvm( fir2IrConfiguration: Fir2IrConfiguration, irGeneratorExtensions: Collection, diagnosticReporter: DiagnosticReporter, - languageVersionSettings: LanguageVersionSettings, ): Fir2IrActualizedResult = this.convertToIrAndActualize( fir2IrExtensions, fir2IrConfiguration, @@ -59,7 +58,6 @@ fun FirResult.convertToIrAndActualizeForJvm( firManglerCreator = { FirJvmKotlinMangler() }, visibilityConverter = FirJvmVisibilityConverter, diagnosticReporter = diagnosticReporter, - languageVersionSettings = languageVersionSettings, kotlinBuiltIns = DefaultBuiltIns.Instance, ) @@ -73,7 +71,6 @@ fun FirResult.convertToIrAndActualize( visibilityConverter: Fir2IrVisibilityConverter, kotlinBuiltIns: KotlinBuiltIns, diagnosticReporter: DiagnosticReporter, - languageVersionSettings: LanguageVersionSettings, fir2IrResultPostCompute: Fir2IrResult.() -> Unit = {}, ): Fir2IrActualizedResult { val fir2IrResult: Fir2IrResult @@ -140,7 +137,7 @@ fun FirResult.convertToIrAndActualize( fir2IrResult.irModuleFragment, commonIrOutputs.map { it.irModuleFragment }, diagnosticReporter, - languageVersionSettings + fir2IrConfiguration.languageVersionSettings ) } } @@ -161,7 +158,7 @@ private fun ModuleCompilerAnalyzedOutput.convertToIr( ): Fir2IrResult { return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded( session, scopeSession, fir, - session.languageVersionSettings, fir2IrExtensions, fir2IrConfiguration, + fir2IrExtensions, fir2IrConfiguration, irMangler, IrFactoryImpl, visibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation for other backends. irGeneratorExtensions, diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConfiguration.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConfiguration.kt index 26396e5ca06..7b17576cf8c 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConfiguration.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConfiguration.kt @@ -16,6 +16,9 @@ package org.jetbrains.kotlin.fir.backend +import org.jetbrains.kotlin.config.LanguageVersionSettings + data class Fir2IrConfiguration( + val languageVersionSettings: LanguageVersionSettings, val linkViaSignatures: Boolean ) 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 150a3c92e83..b5704cbdfe6 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 @@ -440,7 +440,6 @@ class Fir2IrConverter( session: FirSession, scopeSession: ScopeSession, firFiles: List, - languageVersionSettings: LanguageVersionSettings, fir2IrExtensions: Fir2IrExtensions, fir2IrConfiguration: Fir2IrConfiguration, irMangler: KotlinMangler.IrMangler, @@ -471,8 +470,8 @@ class Fir2IrConverter( components.visibilityConverter = visibilityConverter components.typeConverter = Fir2IrTypeConverter(components) val irBuiltIns = initializedIrBuiltIns ?: IrBuiltInsOverFir( - components, languageVersionSettings, moduleDescriptor, irMangler, - languageVersionSettings.getFlag(AnalysisFlags.builtInsFromSources) || kotlinBuiltIns !== DefaultBuiltIns.Instance + components, fir2IrConfiguration.languageVersionSettings, moduleDescriptor, irMangler, + fir2IrConfiguration.languageVersionSettings.getFlag(AnalysisFlags.builtInsFromSources) || kotlinBuiltIns !== DefaultBuiltIns.Instance ) components.irBuiltIns = irBuiltIns val conversionScope = Fir2IrConversionScope() 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 e65808e851d..08225a65de9 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 @@ -274,15 +274,14 @@ class IncrementalFirJvmCompilerRunner( performanceManager?.notifyIRTranslationStarted() val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler) - val fir2IrConfiguration = Fir2IrConfiguration(linkViaSignatures = false) + val fir2IrConfiguration = Fir2IrConfiguration( + languageVersionSettings = configuration.languageVersionSettings, + linkViaSignatures = false + ) val irGenerationExtensions = (projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty() val (irModuleFragment, components, pluginContext, irActualizedResult) = cycleResult.convertToIrAndActualizeForJvm( - extensions, - fir2IrConfiguration, - irGenerationExtensions, - compilerEnvironment.diagnosticsReporter, - configuration.languageVersionSettings + extensions, fir2IrConfiguration, irGenerationExtensions, compilerEnvironment.diagnosticsReporter, ) performanceManager?.notifyIRTranslationFinished() diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsResultsConverter.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsResultsConverter.kt index c212d4dd57b..eaa06d2cb11 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsResultsConverter.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsResultsConverter.kt @@ -147,11 +147,14 @@ fun AbstractFirAnalyzerFacade.convertToJsIr( val libraries = resolveJsLibraries(module, testServices, configuration) val (dependencies, builtIns) = loadResolvedLibraries(libraries, configuration.languageVersionSettings, testServices) + val fir2IrConfiguration = Fir2IrConfiguration( + languageVersionSettings = configuration.languageVersionSettings, + linkViaSignatures = false + ) return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded( session, scopeSession, firFiles.toList(), - languageVersionSettings, fir2IrExtensions, - Fir2IrConfiguration(linkViaSignatures = false), + fir2IrConfiguration, JsManglerIr, IrFactoryImpl, Fir2IrVisibilityConverter.Default, Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt index c820d7b98a0..786647f2c90 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt @@ -304,8 +304,10 @@ open class FirFrontendFacade( val enablePluginPhases = FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES in module.directives val firAnalyzerFacade = FirAnalyzerFacade( moduleBasedSession, - module.languageVersionSettings, - Fir2IrConfiguration(linkViaSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE), + Fir2IrConfiguration( + languageVersionSettings = module.languageVersionSettings, + linkViaSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE + ), ktFiles, lightTreeFiles, IrGenerationExtension.getInstances(project), diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index a0ca2553c38..5fad3b9bdbe 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -122,8 +122,10 @@ object GenerationUtils { // TODO: add running checkers and check that it's safe to compile val firAnalyzerFacade = FirAnalyzerFacade( session, - configuration.languageVersionSettings, - Fir2IrConfiguration(linkViaSignatures = false), + Fir2IrConfiguration( + languageVersionSettings = configuration.languageVersionSettings, + linkViaSignatures = false + ), files, emptyList(), IrGenerationExtension.getInstances(project), 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 cd3ea2613b2..1c0038fb072 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 @@ -42,7 +42,6 @@ abstract class AbstractFirAnalyzerFacade { class FirAnalyzerFacade( val session: FirSession, - val languageVersionSettings: LanguageVersionSettings, val fir2IrConfiguration: Fir2IrConfiguration, val ktFiles: Collection = emptyList(), // may be empty if light tree mode enabled val lightTreeFiles: Collection = emptyList(), // may be empty if light tree mode disabled @@ -114,7 +113,6 @@ class FirAnalyzerFacade( return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded( session, _scopeSession!!, firFiles!!, - languageVersionSettings, fir2IrExtensions, fir2IrConfiguration, JvmIrMangler, IrFactoryImpl, diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Fir2Ir.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Fir2Ir.kt index 367ae11240c..a06ac7f0732 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Fir2Ir.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Fir2Ir.kt @@ -73,14 +73,16 @@ internal fun PhaseContext.fir2Ir( val (irModuleFragment, components, pluginContext, irActualizedResult) = input.firResult.convertToIrAndActualize( fir2IrExtensions, - Fir2IrConfiguration(linkViaSignatures = false), + Fir2IrConfiguration( + languageVersionSettings = configuration.languageVersionSettings, + linkViaSignatures = false + ), IrGenerationExtension.getInstances(config.project), signatureComposerCreator = null, irMangler = KonanManglerIr, firManglerCreator = { FirNativeKotlinMangler() }, visibilityConverter = Fir2IrVisibilityConverter.Default, diagnosticReporter = diagnosticsReporter, - languageVersionSettings = configuration.languageVersionSettings, kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance, fir2IrResultPostCompute = { // it's important to compare manglers before actualization, since IR will be actualized, while FIR won't