[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:
committed by
Space Team
parent
d91efb212d
commit
ee73e4774b
@@ -27,16 +27,14 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageUtil
|
||||
import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForJSIR
|
||||
import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForWasm
|
||||
import org.jetbrains.kotlin.cli.js.klib.compileModuleToAnalyzedFir
|
||||
import org.jetbrains.kotlin.cli.js.klib.generateIrForKlibSerialization
|
||||
import org.jetbrains.kotlin.cli.js.klib.serializeFirKlib
|
||||
import org.jetbrains.kotlin.cli.js.klib.transformFirToIr
|
||||
import org.jetbrains.kotlin.cli.js.klib.*
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.Services
|
||||
import org.jetbrains.kotlin.config.getModuleNameForSource
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
||||
@@ -68,7 +66,6 @@ import org.jetbrains.kotlin.utils.PathUtil
|
||||
import org.jetbrains.kotlin.utils.join
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.nio.charset.Charset
|
||||
|
||||
private val K2JSCompilerArguments.granularity: JsGenerationGranularity
|
||||
get() = when {
|
||||
@@ -493,14 +490,14 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
|
||||
) ?: return null
|
||||
|
||||
// FIR2IR
|
||||
val irResult = transformFirToIr(moduleStructure, outputs, diagnosticsReporter)
|
||||
val fir2IrActualizedResult = transformFirToIr(moduleStructure, outputs, diagnosticsReporter)
|
||||
|
||||
// Serialize klib
|
||||
if (arguments.irProduceKlibDir || arguments.irProduceKlibFile) {
|
||||
serializeFirKlib(
|
||||
moduleStructure = moduleStructure,
|
||||
firOutputs = outputs,
|
||||
irResult = irResult,
|
||||
fir2IrActualizedResult = fir2IrActualizedResult,
|
||||
outputKlibPath = outputKlibPath,
|
||||
messageCollector = messageCollector,
|
||||
diagnosticsReporter = diagnosticsReporter,
|
||||
|
||||
@@ -26,15 +26,12 @@ import org.jetbrains.kotlin.fir.BinaryModuleData
|
||||
import org.jetbrains.kotlin.fir.DependencyListForCliModule
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrResult
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrVisibilityConverter
|
||||
import org.jetbrains.kotlin.fir.backend.extractFirDeclarations
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||
import org.jetbrains.kotlin.fir.pipeline.FirResult
|
||||
import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput
|
||||
import org.jetbrains.kotlin.fir.pipeline.buildResolveAndCheckFir
|
||||
import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualize
|
||||
import org.jetbrains.kotlin.fir.pipeline.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.serialization.FirElementAwareSerializableStringTable
|
||||
import org.jetbrains.kotlin.fir.serialization.FirKLibSerializerExtension
|
||||
@@ -103,7 +100,7 @@ fun transformFirToIr(
|
||||
moduleStructure: ModulesStructure,
|
||||
firOutputs: List<ModuleCompilerAnalyzedOutput>,
|
||||
diagnosticsReporter: PendingDiagnosticsCollectorWithSuppress,
|
||||
): Fir2IrResult {
|
||||
): Fir2IrActualizedResult {
|
||||
val fir2IrExtensions = Fir2IrExtensions.Default
|
||||
|
||||
var builtInsModule: KotlinBuiltIns? = null
|
||||
@@ -149,7 +146,7 @@ fun transformFirToIr(
|
||||
fun serializeFirKlib(
|
||||
moduleStructure: ModulesStructure,
|
||||
firOutputs: List<ModuleCompilerAnalyzedOutput>,
|
||||
irResult: Fir2IrResult,
|
||||
fir2IrActualizedResult: Fir2IrActualizedResult,
|
||||
outputKlibPath: String,
|
||||
messageCollector: MessageCollector,
|
||||
diagnosticsReporter: BaseDiagnosticsCollector,
|
||||
@@ -169,6 +166,8 @@ fun serializeFirKlib(
|
||||
|
||||
val metadataVersion = moduleStructure.compilerConfiguration.metadataVersion()
|
||||
|
||||
val actualizedExpectDeclarations = fir2IrActualizedResult.irActualizationResult.extractFirDeclarations()
|
||||
|
||||
serializeModuleIntoKlib(
|
||||
moduleStructure.compilerConfiguration[CommonConfigurationKeys.MODULE_NAME]!!,
|
||||
moduleStructure.compilerConfiguration,
|
||||
@@ -176,7 +175,7 @@ fun serializeFirKlib(
|
||||
sourceFiles,
|
||||
klibPath = outputKlibPath,
|
||||
moduleStructure.allDependencies,
|
||||
irResult.irModuleFragment,
|
||||
fir2IrActualizedResult.irModuleFragment,
|
||||
expectDescriptorToSymbol = mutableMapOf(),
|
||||
cleanFiles = icData,
|
||||
nopack = true,
|
||||
@@ -191,6 +190,7 @@ fun serializeFirKlib(
|
||||
firFile,
|
||||
session,
|
||||
scopeSession,
|
||||
actualizedExpectDeclarations,
|
||||
FirKLibSerializerExtension(session, metadataVersion, FirElementAwareSerializableStringTable()),
|
||||
moduleStructure.compilerConfiguration.languageVersionSettings,
|
||||
)
|
||||
|
||||
+5
-5
@@ -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()
|
||||
|
||||
+3
-1
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user