[K2, MPP] Remove redundant expect declarations from klib metadata

^KT-57250 Fixed

Introduce flat Fir2IrActualizedResult

It contains output from Fir2Ir and IrActualizer
This commit is contained in:
Ivan Kochurkin
2023-03-15 18:41:52 +01:00
committed by Space Team
parent d91efb212d
commit ee73e4774b
42 changed files with 324 additions and 111 deletions
@@ -153,7 +153,7 @@ object FirKotlinToJvmBytecodeCompiler {
performanceManager?.notifyIRTranslationStarted()
val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
val fir2IrResult = firResult.convertToIrAndActualizeForJvm(
val fir2IrAndIrActualizerResult = firResult.convertToIrAndActualizeForJvm(
fir2IrExtensions,
irGenerationExtensions,
linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
@@ -165,7 +165,7 @@ object FirKotlinToJvmBytecodeCompiler {
val generationState = runBackend(
allSources,
fir2IrResult,
fir2IrAndIrActualizerResult,
fir2IrExtensions,
diagnosticsReporter
)
@@ -219,11 +219,11 @@ object FirKotlinToJvmBytecodeCompiler {
private fun CompilationContext.runBackend(
ktFiles: List<KtFile>,
fir2IrResult: Fir2IrResult,
fir2IrActualizedResult: Fir2IrActualizedResult,
extensions: JvmGeneratorExtensions,
diagnosticsReporter: BaseDiagnosticsCollector
): GenerationState {
val (moduleFragment, components) = fir2IrResult
val (moduleFragment, components, pluginContext, irActualizationResult) = fir2IrActualizedResult
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
val codegenFactory = JvmIrCodegenFactory(
moduleConfiguration,
@@ -252,7 +252,7 @@ object FirKotlinToJvmBytecodeCompiler {
generationState.oldBEInitTrace(ktFiles)
codegenFactory.generateModuleInFrontendIRMode(
generationState, moduleFragment, components.symbolTable, components.irProviders,
extensions, FirJvmBackendExtension(components), fir2IrResult.pluginContext
extensions, FirJvmBackendExtension(components, irActualizationResult), pluginContext
) {
performanceManager?.notifyIRLoweringFinished()
performanceManager?.notifyIRGenerationStarted()
@@ -231,7 +231,7 @@ fun convertAnalyzedFirToIr(
IrGenerationExtension.getInstances(it)
} ?: emptyList()
val linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
val (irModuleFragment, components, pluginContext) =
val (irModuleFragment, components, pluginContext, irActualizationResult) =
analysisResults.convertToIrAndActualizeForJvm(
extensions, irGenerationExtensions, linkViaSignatures,
environment.diagnosticsReporter, input.configuration.languageVersionSettings
@@ -243,7 +243,8 @@ fun convertAnalyzedFirToIr(
extensions,
irModuleFragment,
components,
pluginContext
pluginContext,
irActualizationResult
)
}
@@ -287,7 +288,7 @@ fun generateCodeFromIr(
input.components.symbolTable,
input.components.irProviders,
input.extensions,
FirJvmBackendExtension(input.components),
FirJvmBackendExtension(input.components, input.irActualizationResult),
input.pluginContext
) {
performanceManager?.notifyIRLoweringFinished()
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.cli.jvm.compiler.pipeline
import org.jetbrains.kotlin.backend.common.actualizer.IrActualizationResult
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
@@ -43,5 +44,6 @@ data class ModuleCompilerIrBackendInput(
val extensions: JvmFir2IrExtensions,
val irModuleFragment: IrModuleFragment,
val components: Fir2IrComponents,
val pluginContext: Fir2IrPluginContext
val pluginContext: Fir2IrPluginContext,
val irActualizationResult: IrActualizationResult?
)
@@ -163,6 +163,7 @@ internal class FirMetadataSerializer(
firFile,
session,
scopeSession,
actualizedExpectDeclarations = null,
FirKLibSerializerExtension(session, metadataVersion, FirElementAwareSerializableStringTable()),
languageVersionSettings
)