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 afbcca72dbc..75b08ae1e66 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 @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.fir.BinaryModuleData import org.jetbrains.kotlin.fir.DependencyListForCliModule import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.backend.ConstValueProviderImpl +import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions import org.jetbrains.kotlin.fir.backend.Fir2IrVisibilityConverter import org.jetbrains.kotlin.fir.backend.extractFirDeclarations @@ -129,8 +130,8 @@ fun transformFirToIr( val firResult = FirResult(firOutputs) return firResult.convertToIrAndActualize( fir2IrExtensions, + Fir2IrConfiguration(linkViaSignatures = false), IrGenerationExtension.getInstances(moduleStructure.project), - linkViaSignatures = false, signatureComposerCreator = null, irMangler = JsManglerIr, firManglerCreator = ::FirJsKotlinMangler, 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 6cf0d56a26a..4e8ad57671e 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 @@ -153,10 +153,13 @@ object FirKotlinToJvmBytecodeCompiler { performanceManager?.notifyIRTranslationStarted() val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler) + val fir2IrConfiguration = Fir2IrConfiguration( + linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES) + ) val fir2IrAndIrActualizerResult = firResult.convertToIrAndActualizeForJvm( fir2IrExtensions, + fir2IrConfiguration, irGenerationExtensions, - linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES), diagnosticsReporter, moduleConfiguration.languageVersionSettings ) 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 31c0085c685..449785c91cd 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 @@ -46,6 +46,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions @@ -230,10 +231,12 @@ fun convertAnalyzedFirToIr( (environment.projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) } ?: emptyList() - val linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES) + val fir2IrConfiguration = Fir2IrConfiguration( + linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES) + ) val (irModuleFragment, components, pluginContext, irActualizedResult) = analysisResults.convertToIrAndActualizeForJvm( - extensions, irGenerationExtensions, linkViaSignatures, + extensions, fir2IrConfiguration, irGenerationExtensions, environment.diagnosticsReporter, input.configuration.languageVersionSettings ) 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 104be8ddebd..3fe248b4315 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 @@ -46,14 +46,14 @@ data class Fir2IrActualizedResult( fun FirResult.convertToIrAndActualizeForJvm( fir2IrExtensions: Fir2IrExtensions, + fir2IrConfiguration: Fir2IrConfiguration, irGeneratorExtensions: Collection, - linkViaSignatures: Boolean, diagnosticReporter: DiagnosticReporter, languageVersionSettings: LanguageVersionSettings, ): Fir2IrActualizedResult = this.convertToIrAndActualize( fir2IrExtensions, + fir2IrConfiguration, irGeneratorExtensions, - linkViaSignatures = linkViaSignatures, signatureComposerCreator = { JvmIdSignatureDescriptor(JvmDescriptorMangler(null)) }, irMangler = JvmIrMangler, firManglerCreator = { FirJvmKotlinMangler() }, @@ -65,8 +65,8 @@ fun FirResult.convertToIrAndActualizeForJvm( fun FirResult.convertToIrAndActualize( fir2IrExtensions: Fir2IrExtensions, + fir2IrConfiguration: Fir2IrConfiguration, irGeneratorExtensions: Collection, - linkViaSignatures: Boolean, signatureComposerCreator: (() -> IdSignatureComposer)?, irMangler: KotlinMangler.IrMangler, firManglerCreator: () -> FirMangler, @@ -80,7 +80,7 @@ fun FirResult.convertToIrAndActualize( val actualizationResult: IrActualizedResult? val commonMemberStorage = Fir2IrCommonMemberStorage( - generateSignatures = linkViaSignatures, + generateSignatures = fir2IrConfiguration.linkViaSignatures, signatureComposerCreator = signatureComposerCreator, manglerCreator = firManglerCreator ) @@ -90,8 +90,8 @@ fun FirResult.convertToIrAndActualize( 1 -> { fir2IrResult = outputs.single().convertToIr( fir2IrExtensions, + fir2IrConfiguration, irGeneratorExtensions, - linkViaSignatures = linkViaSignatures, commonMemberStorage = commonMemberStorage, irBuiltIns = null, irMangler, @@ -109,8 +109,8 @@ fun FirResult.convertToIrAndActualize( val commonIrOutputs = commonOutputs.map { it.convertToIr( fir2IrExtensions, + fir2IrConfiguration, irGeneratorExtensions, - linkViaSignatures = linkViaSignatures, commonMemberStorage = commonMemberStorage, irBuiltIns = irBuiltIns, irMangler, @@ -125,8 +125,8 @@ fun FirResult.convertToIrAndActualize( } fir2IrResult = platformOutput.convertToIr( fir2IrExtensions, + fir2IrConfiguration, irGeneratorExtensions, - linkViaSignatures = linkViaSignatures, commonMemberStorage = commonMemberStorage, irBuiltIns = irBuiltIns!!, irMangler, @@ -151,8 +151,8 @@ fun FirResult.convertToIrAndActualize( private fun ModuleCompilerAnalyzedOutput.convertToIr( fir2IrExtensions: Fir2IrExtensions, + fir2IrConfiguration: Fir2IrConfiguration, irGeneratorExtensions: Collection, - linkViaSignatures: Boolean, commonMemberStorage: Fir2IrCommonMemberStorage, irBuiltIns: IrBuiltInsOverFir?, irMangler: KotlinMangler.IrMangler, @@ -161,12 +161,11 @@ private fun ModuleCompilerAnalyzedOutput.convertToIr( ): Fir2IrResult { return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded( session, scopeSession, fir, - session.languageVersionSettings, fir2IrExtensions, + session.languageVersionSettings, fir2IrExtensions, fir2IrConfiguration, irMangler, IrFactoryImpl, visibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation for other backends. irGeneratorExtensions, kotlinBuiltIns = kotlinBuiltIns, - generateSignatures = linkViaSignatures, commonMemberStorage = commonMemberStorage, initializedIrBuiltIns = irBuiltIns ) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt index f3645e6a69b..06e4063d75c 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt @@ -341,7 +341,7 @@ class Fir2IrClassifierStorage( ClassKind.ANNOTATION_CLASS -> Modality.OPEN else -> regularClass.modality ?: Modality.FINAL } - val signature = runUnless(regularClass.isLocal || !generateSignatures) { + val signature = runUnless(regularClass.isLocal || !configuration.linkViaSignatures) { signatureComposer.composeSignature(regularClass) } val irClass = regularClass.convertWithOffsets { startOffset, endOffset -> @@ -591,7 +591,7 @@ class Fir2IrClassifierStorage( // firClass may be referenced by some parent's type parameters as a bound. In that case, getIrClassSymbol will be called recursively. getCachedIrClass(firClass)?.let { return it.symbol } - val signature = runIf(generateSignatures) { + val signature = runIf(configuration.linkViaSignatures) { signatureComposer.composeSignature(firClass, forceTopLevelPrivate = forceTopLevelPrivate) } val irClass = firClass.convertWithOffsets { startOffset, endOffset -> diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt index 24b9968d9e8..8cfe4409d88 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt @@ -11,7 +11,6 @@ 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.resolve.ScopeSession -import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.IrLock import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.linkage.IrProvider @@ -43,5 +42,5 @@ interface Fir2IrComponents { val delegatedMemberGenerator: DelegatedMemberGenerator val extensions: Fir2IrExtensions - val generateSignatures: Boolean + val configuration: Fir2IrConfiguration } 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 9517dc5c20d..790ac6b4f9e 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 @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.backend.generators.DelegatedMemberGenerator import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.signaturer.FirBasedSignatureComposer -import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.IrLock import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.linkage.IrProvider @@ -25,7 +24,7 @@ class Fir2IrComponentsStorage( override val irFactory: IrFactory, override val signatureComposer: FirBasedSignatureComposer, override val extensions: Fir2IrExtensions, - override val generateSignatures: Boolean + override val configuration: Fir2IrConfiguration, ) : Fir2IrComponents { override lateinit var converter: Fir2IrConverter 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 new file mode 100644 index 00000000000..26396e5ca06 --- /dev/null +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConfiguration.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.fir.backend + +data class Fir2IrConfiguration( + 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 8f291ea2280..150a3c92e83 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 @@ -50,7 +50,7 @@ class Fir2IrConverter( private var wereSourcesFakeOverridesBound = false private val postponedDeclarationsForFakeOverridesBinding = mutableListOf() - fun runSourcesConversion( + private fun runSourcesConversion( allFirFiles: List, irModuleFragment: IrModuleFragmentImpl, irGenerationExtensions: Collection, @@ -442,12 +442,12 @@ class Fir2IrConverter( firFiles: List, languageVersionSettings: LanguageVersionSettings, fir2IrExtensions: Fir2IrExtensions, + fir2IrConfiguration: Fir2IrConfiguration, irMangler: KotlinMangler.IrMangler, irFactory: IrFactory, visibilityConverter: Fir2IrVisibilityConverter, specialSymbolProvider: Fir2IrSpecialSymbolProvider, irGenerationExtensions: Collection, - generateSignatures: Boolean, kotlinBuiltIns: KotlinBuiltIns, commonMemberStorage: Fir2IrCommonMemberStorage, initializedIrBuiltIns: IrBuiltInsOverFir? @@ -460,7 +460,7 @@ class Fir2IrConverter( irFactory, commonMemberStorage.signatureComposer, fir2IrExtensions, - generateSignatures + fir2IrConfiguration, ) val converter = Fir2IrConverter(moduleDescriptor, components) 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 f03960d3fe4..b24c5b19f29 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 @@ -526,7 +526,7 @@ class Fir2IrDeclarationStorage( val signature = runUnless( isLocal || - !generateSignatures && irParent !is Fir2IrLazyClass && + !configuration.linkViaSignatures && irParent !is Fir2IrLazyClass && function.dispatchReceiverType?.isPrimitive != true && function.containerSource == null && updatedOrigin != IrDeclarationOrigin.FAKE_OVERRIDE && !function.isOverride ) { @@ -632,7 +632,7 @@ class Fir2IrDeclarationStorage( val origin = constructor.computeIrOrigin(predefinedOrigin) val isPrimary = constructor.isPrimary val signature = - runUnless(isLocal || !generateSignatures) { + runUnless(isLocal || !configuration.linkViaSignatures) { signatureComposer.composeSignature(constructor, forceTopLevelPrivate = forceTopLevelPrivate) } val visibility = if (irParent.isAnonymousObject) Visibilities.Public else constructor.visibility @@ -868,7 +868,7 @@ class Fir2IrDeclarationStorage( val signature = runUnless( isLocal || - !generateSignatures && irParent !is Fir2IrLazyClass && + !configuration.linkViaSignatures && irParent !is Fir2IrLazyClass && property.dispatchReceiverType?.isPrimitive != true && property.containerSource == null && origin != IrDeclarationOrigin.FAKE_OVERRIDE && !property.isOverride ) { 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 9953d88ea9c..e65808e851d 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 @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.cli.jvm.config.* import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory +import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions import org.jetbrains.kotlin.fir.pipeline.FirResult import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualizeForJvm @@ -273,12 +274,13 @@ class IncrementalFirJvmCompilerRunner( performanceManager?.notifyIRTranslationStarted() val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler) + val fir2IrConfiguration = Fir2IrConfiguration(linkViaSignatures = false) val irGenerationExtensions = (projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty() val (irModuleFragment, components, pluginContext, irActualizedResult) = cycleResult.convertToIrAndActualizeForJvm( extensions, + fir2IrConfiguration, irGenerationExtensions, - linkViaSignatures = false, compilerEnvironment.diagnosticsReporter, configuration.languageVersionSettings ) 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 dfec5e308ad..c212d4dd57b 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 @@ -151,11 +151,11 @@ fun AbstractFirAnalyzerFacade.convertToJsIr( session, scopeSession, firFiles.toList(), languageVersionSettings, fir2IrExtensions, + Fir2IrConfiguration(linkViaSignatures = false), JsManglerIr, IrFactoryImpl, Fir2IrVisibilityConverter.Default, Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation irGeneratorExtensions, - generateSignatures = false, kotlinBuiltIns = builtIns ?: DefaultBuiltIns.Instance, // TODO: consider passing externally, commonMemberStorage = commonMemberStorage, initializedIrBuiltIns = irBuiltIns diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrResultsConverter.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrResultsConverter.kt index 307ba96decd..34b43fbb239 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrResultsConverter.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrResultsConverter.kt @@ -86,8 +86,8 @@ class Fir2IrResultsConverter( lateinit var mainIrPart: JvmIrCodegenFactory.JvmIrBackendInput lateinit var mainModuleComponents: Fir2IrComponents - val generateSignatures = - (inputArtifact.partsForDependsOnModules.last().firAnalyzerFacade as? FirAnalyzerFacade)?.generateSignatures == true + val firAnalyzerFacade = inputArtifact.partsForDependsOnModules.last().firAnalyzerFacade as? FirAnalyzerFacade + val generateSignatures = firAnalyzerFacade?.fir2IrConfiguration?.linkViaSignatures == true val commonMemberStorage = Fir2IrCommonMemberStorage( generateSignatures = generateSignatures, 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 abacc5b3cdb..c820d7b98a0 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 @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.cli.jvm.config.jvmModularRoots import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.container.topologicalSort import org.jetbrains.kotlin.fir.* +import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar @@ -37,9 +38,9 @@ import org.jetbrains.kotlin.platform.isJs import org.jetbrains.kotlin.platform.jvm.isJvm import org.jetbrains.kotlin.platform.konan.isNative import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.test.FirParser import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives -import org.jetbrains.kotlin.test.FirParser import org.jetbrains.kotlin.test.directives.model.DirectivesContainer import org.jetbrains.kotlin.test.directives.model.singleValue import org.jetbrains.kotlin.test.getAnalyzerServices @@ -304,12 +305,12 @@ open class FirFrontendFacade( val firAnalyzerFacade = FirAnalyzerFacade( moduleBasedSession, module.languageVersionSettings, + Fir2IrConfiguration(linkViaSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE), ktFiles, lightTreeFiles, IrGenerationExtension.getInstances(project), parser, enablePluginPhases, - generateSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE ) val firFiles = firAnalyzerFacade.runResolution() val filesMap = firFiles.mapNotNull { firFile -> 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 7f1e7169121..a0ca2553c38 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 @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.fir.FirAnalyzerFacade import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage +import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler @@ -122,16 +123,16 @@ object GenerationUtils { val firAnalyzerFacade = FirAnalyzerFacade( session, configuration.languageVersionSettings, + Fir2IrConfiguration(linkViaSignatures = false), files, emptyList(), IrGenerationExtension.getInstances(project), FirParser.Psi, - generateSignatures = false ) val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler) val commonMemberStorage = Fir2IrCommonMemberStorage( - generateSignatures = firAnalyzerFacade.generateSignatures, + generateSignatures = firAnalyzerFacade.fir2IrConfiguration.linkViaSignatures, signatureComposerCreator = { JvmIdSignatureDescriptor(JvmDescriptorMangler(null)) }, manglerCreator = { FirJvmKotlinMangler() } ) 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 cebfe893e88..cd3ea2613b2 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 @@ -43,12 +43,12 @@ 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 val irGeneratorExtensions: Collection, val parser: FirParser, val enablePluginPhases: Boolean = false, - val generateSignatures: Boolean = false ) : AbstractFirAnalyzerFacade() { private var firFiles: List? = null private var _scopeSession: ScopeSession? = null @@ -116,11 +116,11 @@ class FirAnalyzerFacade( session, _scopeSession!!, firFiles!!, languageVersionSettings, fir2IrExtensions, + fir2IrConfiguration, JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), irGeneratorExtensions, - generateSignatures, kotlinBuiltIns = DefaultBuiltIns.Instance, // TODO: consider passing externally, commonMemberStorage = commonMemberStorage, initializedIrBuiltIns = irBuiltIns 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 679ba8833c4..367ae11240c 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 @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentTypeTransformer import org.jetbrains.kotlin.descriptors.isEmpty import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib +import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.fir.backend.* import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor @@ -72,8 +73,8 @@ internal fun PhaseContext.fir2Ir( val (irModuleFragment, components, pluginContext, irActualizedResult) = input.firResult.convertToIrAndActualize( fir2IrExtensions, + Fir2IrConfiguration(linkViaSignatures = false), IrGenerationExtension.getInstances(config.project), - linkViaSignatures = false, signatureComposerCreator = null, irMangler = KonanManglerIr, firManglerCreator = { FirNativeKotlinMangler() },