[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
+14
-10
@@ -18,13 +18,15 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentTypeTransformer
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrResult
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrPluginContext
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrVisibilityConverter
|
||||
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
||||
import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualize
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataFactories
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
@@ -66,7 +68,7 @@ internal fun PhaseContext.fir2Ir(
|
||||
}
|
||||
val diagnosticsReporter = DiagnosticReporterFactory.createPendingReporter()
|
||||
|
||||
val fir2irResult = input.firResult.convertToIrAndActualize(
|
||||
val (irModuleFragment, components, pluginContext, irActualizationResult) = input.firResult.convertToIrAndActualize(
|
||||
fir2IrExtensions,
|
||||
IrGenerationExtension.getInstances(config.project),
|
||||
linkViaSignatures = false,
|
||||
@@ -79,11 +81,11 @@ internal fun PhaseContext.fir2Ir(
|
||||
).also {
|
||||
(it.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = librariesDescriptors }
|
||||
}
|
||||
assert(fir2irResult.irModuleFragment.name.isSpecial) {
|
||||
"`${fir2irResult.irModuleFragment.name}` must be Name.special, since it's required by KlibMetadataModuleDescriptorFactoryImpl.createDescriptorOptionalBuiltIns()"
|
||||
assert(irModuleFragment.name.isSpecial) {
|
||||
"`${irModuleFragment.name}` must be Name.special, since it's required by KlibMetadataModuleDescriptorFactoryImpl.createDescriptorOptionalBuiltIns()"
|
||||
}
|
||||
|
||||
val symbols = createKonanSymbols(fir2irResult)
|
||||
val symbols = createKonanSymbols(irModuleFragment, components, pluginContext)
|
||||
// TODO KT-55580 Invoke CopyDefaultValuesToActualPhase, same as PsiToir phase does.
|
||||
|
||||
val renderDiagnosticNames = configuration.getBoolean(CLIConfigurationKeys.RENDER_DIAGNOSTIC_INTERNAL_NAME)
|
||||
@@ -93,15 +95,17 @@ internal fun PhaseContext.fir2Ir(
|
||||
throw KonanCompilationException("Compilation failed: there were some diagnostics during fir2ir")
|
||||
}
|
||||
|
||||
return Fir2IrOutput(input.firResult, fir2irResult, symbols)
|
||||
return Fir2IrOutput(input.firResult, symbols, irModuleFragment, components, pluginContext, irActualizationResult)
|
||||
}
|
||||
|
||||
private fun PhaseContext.createKonanSymbols(
|
||||
fir2irResult: Fir2IrResult,
|
||||
irModuleFragment: IrModuleFragment,
|
||||
components: Fir2IrComponents,
|
||||
pluginContext: Fir2IrPluginContext,
|
||||
): KonanSymbolsOverFir {
|
||||
val moduleDescriptor = fir2irResult.irModuleFragment.descriptor
|
||||
val symbolTable = SymbolTable(KonanIdSignaturer(KonanManglerDesc), fir2irResult.pluginContext.irFactory)
|
||||
val moduleDescriptor = irModuleFragment.descriptor
|
||||
val symbolTable = SymbolTable(KonanIdSignaturer(KonanManglerDesc), pluginContext.irFactory)
|
||||
val descriptorsLookup = DescriptorsLookup(moduleDescriptor.builtIns as KonanBuiltIns)
|
||||
|
||||
return KonanSymbolsOverFir(this, descriptorsLookup, fir2irResult.components.irBuiltIns, symbolTable, symbolTable.lazyWrapper)
|
||||
return KonanSymbolsOverFir(this, descriptorsLookup, components.irBuiltIns, symbolTable, symbolTable.lazyWrapper)
|
||||
}
|
||||
|
||||
+4
-1
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.backend.extractFirDeclarations
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
@@ -53,12 +54,13 @@ internal fun PhaseContext.firSerializer(
|
||||
?: configuration.languageVersionSettings.languageVersion.toMetadataVersion()
|
||||
|
||||
val resolvedLibraries = config.resolvedLibraries.getFullResolvedList(TopologicalLibraryOrder) // FIXME KT-55603
|
||||
val actualizedFirDeclarations = input.irActualizationResult.extractFirDeclarations()
|
||||
return serializeNativeModule(
|
||||
configuration = configuration,
|
||||
messageLogger = configuration.get(IrMessageLogger.IR_MESSAGE_LOGGER) ?: IrMessageLogger.None,
|
||||
sourceFiles,
|
||||
resolvedLibraries.map { it.library as KonanLibrary },
|
||||
input.fir2irResult.irModuleFragment,
|
||||
input.irModuleFragment,
|
||||
expectDescriptorToSymbol = mutableMapOf() // TODO: expect -> actual mapping
|
||||
) { file ->
|
||||
val (firFile, session, scopeSession) = firFilesAndSessionsBySourceFile[file]
|
||||
@@ -67,6 +69,7 @@ internal fun PhaseContext.firSerializer(
|
||||
firFile,
|
||||
session,
|
||||
scopeSession,
|
||||
actualizedFirDeclarations,
|
||||
FirNativeKLibSerializerExtension(session, metadataVersion, FirElementAwareSerializableStringTable()),
|
||||
configuration.languageVersionSettings,
|
||||
)
|
||||
|
||||
+3
-3
@@ -15,8 +15,8 @@ import org.jetbrains.kotlin.backend.konan.driver.utilities.getDefaultIrActions
|
||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||
import org.jetbrains.kotlin.backend.konan.lower.ExpectToActualDefaultValueCopier
|
||||
import org.jetbrains.kotlin.backend.konan.lower.SpecialBackendChecksTraversal
|
||||
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
|
||||
import org.jetbrains.kotlin.backend.konan.makeEntryPoint
|
||||
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
@@ -47,10 +47,10 @@ internal val K2SpecialBackendChecksPhase = createSimpleNamedCompilerPhase<PhaseC
|
||||
"SpecialBackendChecks",
|
||||
"Special backend checks",
|
||||
) { context, input ->
|
||||
val moduleFragment = input.fir2irResult.irModuleFragment
|
||||
val moduleFragment = input.irModuleFragment
|
||||
SpecialBackendChecksTraversal(
|
||||
context,
|
||||
InteropBuiltIns(input.fir2irResult.pluginContext.moduleDescriptor.builtIns as KonanBuiltIns),
|
||||
InteropBuiltIns(input.pluginContext.moduleDescriptor.builtIns as KonanBuiltIns),
|
||||
input.symbols,
|
||||
moduleFragment.irBuiltins
|
||||
).lower(moduleFragment)
|
||||
|
||||
+9
-3
@@ -5,17 +5,23 @@
|
||||
|
||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.actualizer.IrActualizationResult
|
||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
|
||||
import org.jetbrains.kotlin.backend.konan.fir2Ir
|
||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrResult
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrPluginContext
|
||||
import org.jetbrains.kotlin.fir.pipeline.FirResult
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
|
||||
internal data class Fir2IrOutput(
|
||||
val firResult: FirResult,
|
||||
val fir2irResult: Fir2IrResult,
|
||||
val symbols: KonanSymbols
|
||||
val symbols: KonanSymbols,
|
||||
val irModuleFragment: IrModuleFragment,
|
||||
val components: Fir2IrComponents,
|
||||
val pluginContext: Fir2IrPluginContext,
|
||||
val irActualizationResult: IrActualizationResult?
|
||||
)
|
||||
|
||||
internal val Fir2IrPhase = createSimpleNamedCompilerPhase(
|
||||
|
||||
Reference in New Issue
Block a user