Fir2Ir: add irProviders to Fir2IrComponents

Removes the last use of DeclarationStubGenerator in the FIR pipeline.
This commit is contained in:
Georgy Bronnikov
2021-12-09 15:52:47 +03:00
committed by Alexander Udalov
parent 13d4d60afa
commit 3f66b31a47
9 changed files with 13 additions and 24 deletions
@@ -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()
@@ -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()
@@ -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
)
@@ -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<IrProvider>
val lock: IrLock
val classifierStorage: Fir2IrClassifierStorage
@@ -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<IrProvider>
override lateinit var typeConverter: Fir2IrTypeConverter
override lateinit var visibilityConverter: Fir2IrVisibilityConverter
@@ -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)
@@ -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<IrProvider>,
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<IrProvider> {
return generateTypicalIrProviderList(
irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable,
DescriptorByIdSignatureFinderImpl(irModuleFragment.descriptor, JvmDescriptorMangler(null)),
extensions = extensions
)
}
}
@@ -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 = {},
@@ -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()