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 01b81c87622..5b8dd42cebc 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 @@ -344,7 +344,7 @@ object FirKotlinToJvmBytecodeCompiler { generationState.beforeCompile() generationState.oldBEInitTrace(ktFiles) codegenFactory.generateModuleInFrontendIRMode( - generationState, moduleFragment, symbolTable, extensions, FirJvmBackendExtension(session, components) + generationState, moduleFragment, symbolTable, components.irProviders, extensions, FirJvmBackendExtension(session, components) ) { performanceManager?.notifyIRLoweringFinished() performanceManager?.notifyIRGenerationStarted() 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 8f0e2393bc5..3f068789d93 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 @@ -241,7 +241,7 @@ fun generateCodeFromIr( generationState.beforeCompile() codegenFactory.generateModuleInFrontendIRMode( - generationState, input.irModuleFragment, input.symbolTable, input.extensions, + generationState, input.irModuleFragment, input.symbolTable, input.components.irProviders, input.extensions, FirJvmBackendExtension(input.firSession, input.components) ) { performanceManager?.notifyIRLoweringFinished() diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/JvmFir2IrExtensions.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/JvmFir2IrExtensions.kt index 31fdc76c1d0..bf8de5fc4aa 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/JvmFir2IrExtensions.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/JvmFir2IrExtensions.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.config.JvmSerializeIrMode import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions -import org.jetbrains.kotlin.fir.backend.FirIrProvider import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler import org.jetbrains.kotlin.ir.declarations.* @@ -86,7 +85,7 @@ class JvmFir2IrExtensions(configuration: CompilerConfiguration) : Fir2IrExtensio } ?: return false deserializeFromByteArray( serializedIr, - irBuiltIns, symbolTable, listOf(FirIrProvider(this)), + irBuiltIns, symbolTable, irProviders, irClass, JvmIrTypeSystemContext(irBuiltIns), allowErrorNodes = false ) 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 d4eec95acd3..a62f3876ac5 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 @@ -14,6 +14,7 @@ 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 import org.jetbrains.kotlin.ir.util.SymbolTable interface Fir2IrComponents { @@ -26,6 +27,7 @@ interface Fir2IrComponents { val irBuiltIns: IrBuiltIns val builtIns: Fir2IrBuiltIns val irFactory: IrFactory + val irProviders: List val lock: IrLock val classifierStorage: Fir2IrClassifierStorage 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 17f851120a5..1c6457ea9e9 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 @@ -15,6 +15,7 @@ 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 import org.jetbrains.kotlin.ir.util.SymbolTable class Fir2IrComponentsStorage( @@ -32,6 +33,7 @@ class Fir2IrComponentsStorage( override lateinit var irBuiltIns: IrBuiltIns override lateinit var builtIns: Fir2IrBuiltIns + override lateinit var irProviders: List override lateinit var typeConverter: Fir2IrTypeConverter override lateinit var visibilityConverter: Fir2IrVisibilityConverter 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 98bc2d7c639..ca332346d74 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 @@ -459,6 +459,8 @@ class Fir2IrConverter( components.fakeOverrideGenerator = fakeOverrideGenerator val callGenerator = CallAndReferenceGenerator(components, fir2irVisitor, conversionScope) components.callGenerator = callGenerator + val irProvider = FirIrProvider(components) + components.irProviders = listOf(irProvider) fir2IrExtensions.registerDeclarations(symbolTable) diff --git a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt index 8bc6e1814d0..49b9579f6fd 100644 --- a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt +++ b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt @@ -44,7 +44,6 @@ import org.jetbrains.kotlin.psi2ir.generators.DeclarationStubGeneratorForNotFoun import org.jetbrains.kotlin.psi2ir.generators.DeclarationStubGeneratorImpl import org.jetbrains.kotlin.psi2ir.generators.fragments.EvaluatorFragmentInfo import org.jetbrains.kotlin.psi2ir.generators.fragments.FragmentContext -import org.jetbrains.kotlin.psi2ir.generators.generateTypicalIrProviderList import org.jetbrains.kotlin.psi2ir.preprocessing.SourceDeclarationsPreprocessor import org.jetbrains.kotlin.resolve.CleanableBindingContext @@ -292,26 +291,14 @@ open class JvmIrCodegenFactory( state: GenerationState, irModuleFragment: IrModuleFragment, symbolTable: SymbolTable, + irProviders: List, extensions: JvmGeneratorExtensions, backendExtension: JvmBackendExtension, notifyCodegenStart: () -> Unit = {} ) { - val irProviders = configureBuiltInsAndGenerateIrProvidersInFrontendIRMode(irModuleFragment, symbolTable, jvmGeneratorExtensions) generateModule( state, JvmIrBackendInput(irModuleFragment, symbolTable, phaseConfig, irProviders, extensions, backendExtension, notifyCodegenStart) ) } - - fun configureBuiltInsAndGenerateIrProvidersInFrontendIRMode( - irModuleFragment: IrModuleFragment, - symbolTable: SymbolTable, - extensions: JvmGeneratorExtensionsImpl, - ): List { - return generateTypicalIrProviderList( - irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable, - DescriptorByIdSignatureFinderImpl(irModuleFragment.descriptor, JvmDescriptorMangler(null)), - extensions = extensions - ) - } } 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 8d316ed9879..830aee71c30 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 @@ -71,9 +71,6 @@ class Fir2IrResultsConverter( FirJvmBackendClassResolver(components) ).build() - val extensions = JvmGeneratorExtensionsImpl(configuration) - val irProviders = codegenFactory.configureBuiltInsAndGenerateIrProvidersInFrontendIRMode(irModuleFragment, symbolTable, extensions) - return IrBackendInput.JvmIrBackendInput( generationState, codegenFactory, @@ -81,7 +78,7 @@ class Fir2IrResultsConverter( irModuleFragment, symbolTable, phaseConfig, - irProviders, + components.irProviders, fir2IrExtensions, FirJvmBackendExtension(inputArtifact.session, components), notifyCodegenStart = {}, 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 5055cd89ab2..7b025f1dec5 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 @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.TestsCompiletimeError import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.asJava.finder.JavaElementFinder import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension -import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity @@ -134,7 +133,8 @@ object GenerationUtils { generationState.beforeCompile() generationState.oldBEInitTrace(files) codegenFactory.generateModuleInFrontendIRMode( - generationState, moduleFragment, symbolTable, fir2IrExtensions, FirJvmBackendExtension(session, components), + generationState, moduleFragment, symbolTable, components.irProviders, + fir2IrExtensions, FirJvmBackendExtension(session, components), ) {} generationState.factory.done()