[Native] Minor. Slightly refactor FirNativeSerializer.kt
This commit is contained in:
committed by
Space Team
parent
3aa84906c2
commit
1434d26d1b
+25
-25
@@ -40,12 +40,13 @@ internal fun PhaseContext.firSerializer(input: FirOutput): SerializerOutput? = w
|
|||||||
else -> firSerializerBase(input.firResult, null)
|
else -> firSerializerBase(input.firResult, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun PhaseContext.fir2IrSerializer(input: FirSerializerInput) =
|
internal fun PhaseContext.fir2IrSerializer(input: FirSerializerInput): SerializerOutput {
|
||||||
firSerializerBase(input.firToIrOutput.firResult, input.firToIrOutput, produceHeaderKlib = input.produceHeaderKlib)
|
return firSerializerBase(input.firToIrOutput.firResult, input.firToIrOutput, produceHeaderKlib = input.produceHeaderKlib)
|
||||||
|
}
|
||||||
|
|
||||||
internal fun PhaseContext.firSerializerBase(
|
internal fun PhaseContext.firSerializerBase(
|
||||||
firResult: FirResult,
|
firResult: FirResult,
|
||||||
fir2IrInput: Fir2IrOutput?,
|
fir2IrOutput: Fir2IrOutput?,
|
||||||
produceHeaderKlib: Boolean = false,
|
produceHeaderKlib: Boolean = false,
|
||||||
): SerializerOutput {
|
): SerializerOutput {
|
||||||
val configuration = config.configuration
|
val configuration = config.configuration
|
||||||
@@ -63,13 +64,13 @@ internal fun PhaseContext.firSerializerBase(
|
|||||||
configuration.get(CommonConfigurationKeys.METADATA_VERSION)
|
configuration.get(CommonConfigurationKeys.METADATA_VERSION)
|
||||||
?: configuration.languageVersionSettings.languageVersion.toMetadataVersion()
|
?: configuration.languageVersionSettings.languageVersion.toMetadataVersion()
|
||||||
|
|
||||||
val usedResolvedLibraries = fir2IrInput?.let {
|
val usedResolvedLibraries = fir2IrOutput?.let {
|
||||||
config.resolvedLibraries.getFullResolvedList(TopologicalLibraryOrder).filter {
|
config.resolvedLibraries.getFullResolvedList(TopologicalLibraryOrder).filter {
|
||||||
(!it.isDefault && !configuration.getBoolean(KonanConfigKeys.PURGE_USER_LIBS)) || it in fir2IrInput.usedLibraries
|
(!it.isDefault && !configuration.getBoolean(KonanConfigKeys.PURGE_USER_LIBS)) || it in fir2IrOutput.usedLibraries
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val actualizedFirDeclarations = fir2IrInput?.irActualizedResult?.actualizedExpectDeclarations?.extractFirDeclarations()
|
val actualizedFirDeclarations = fir2IrOutput?.irActualizedResult?.actualizedExpectDeclarations?.extractFirDeclarations()
|
||||||
val diagnosticReporter = DiagnosticReporterFactory.createPendingReporter()
|
val diagnosticReporter = DiagnosticReporterFactory.createPendingReporter()
|
||||||
val serializerOutput = serializeNativeModule(
|
val serializerOutput = serializeNativeModule(
|
||||||
configuration = configuration,
|
configuration = configuration,
|
||||||
@@ -77,15 +78,15 @@ internal fun PhaseContext.firSerializerBase(
|
|||||||
messageLogger = configuration.get(IrMessageLogger.IR_MESSAGE_LOGGER) ?: IrMessageLogger.None,
|
messageLogger = configuration.get(IrMessageLogger.IR_MESSAGE_LOGGER) ?: IrMessageLogger.None,
|
||||||
sourceFiles,
|
sourceFiles,
|
||||||
usedResolvedLibraries?.map { it.library as KonanLibrary },
|
usedResolvedLibraries?.map { it.library as KonanLibrary },
|
||||||
fir2IrInput?.irModuleFragment,
|
fir2IrOutput?.irModuleFragment,
|
||||||
moduleName = fir2IrInput?.irModuleFragment?.descriptor?.name?.asString()
|
moduleName = fir2IrOutput?.irModuleFragment?.descriptor?.name?.asString()
|
||||||
?: firResult.outputs.last().session.moduleData.name.asString(),
|
?: firResult.outputs.last().session.moduleData.name.asString(),
|
||||||
firFilesAndSessionsBySourceFile,
|
firFilesAndSessionsBySourceFile,
|
||||||
bodiesOnlyForInlines = produceHeaderKlib,
|
bodiesOnlyForInlines = produceHeaderKlib,
|
||||||
skipPrivateApi = produceHeaderKlib,
|
skipPrivateApi = produceHeaderKlib,
|
||||||
) { firFile, originalSession, originalScopeSession ->
|
) { firFile, originalSession, originalScopeSession ->
|
||||||
val session = fir2IrInput?.components?.session ?: originalSession
|
val session = fir2IrOutput?.components?.session ?: originalSession
|
||||||
val scopeSession = fir2IrInput?.components?.scopeSession ?: originalScopeSession
|
val scopeSession = fir2IrOutput?.components?.scopeSession ?: originalScopeSession
|
||||||
serializeSingleFirFile(
|
serializeSingleFirFile(
|
||||||
firFile,
|
firFile,
|
||||||
session,
|
session,
|
||||||
@@ -93,12 +94,12 @@ internal fun PhaseContext.firSerializerBase(
|
|||||||
actualizedFirDeclarations,
|
actualizedFirDeclarations,
|
||||||
FirKLibSerializerExtension(
|
FirKLibSerializerExtension(
|
||||||
session, metadataVersion,
|
session, metadataVersion,
|
||||||
fir2IrInput?.let {
|
fir2IrOutput?.let {
|
||||||
ConstValueProviderImpl(fir2IrInput.components)
|
ConstValueProviderImpl(fir2IrOutput.components)
|
||||||
},
|
},
|
||||||
allowErrorTypes = false,
|
allowErrorTypes = false,
|
||||||
exportKDoc = shouldExportKDoc(),
|
exportKDoc = shouldExportKDoc(),
|
||||||
additionalMetadataProvider = fir2IrInput?.components?.annotationsFromPluginRegistrar?.createAdditionalMetadataProvider()
|
additionalMetadataProvider = fir2IrOutput?.components?.annotationsFromPluginRegistrar?.createAdditionalMetadataProvider()
|
||||||
),
|
),
|
||||||
configuration.languageVersionSettings,
|
configuration.languageVersionSettings,
|
||||||
produceHeaderKlib,
|
produceHeaderKlib,
|
||||||
@@ -122,18 +123,17 @@ class KotlinFileSerializedData(
|
|||||||
val path: String? get() = irData?.path ?: source.path
|
val path: String? get() = irData?.path ?: source.path
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun PhaseContext.serializeNativeModule(
|
private fun serializeNativeModule(
|
||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
diagnosticReporter: DiagnosticReporter,
|
diagnosticReporter: DiagnosticReporter,messageLogger: IrMessageLogger,
|
||||||
messageLogger: IrMessageLogger,
|
files: List<KtSourceFile>,
|
||||||
files: List<KtSourceFile>,
|
dependencies: List<KonanLibrary>?,
|
||||||
dependencies: List<KonanLibrary>?,
|
moduleFragment: IrModuleFragment?,
|
||||||
moduleFragment: IrModuleFragment?,
|
moduleName: String,
|
||||||
moduleName: String,
|
firFilesAndSessionsBySourceFile: Map<KtSourceFile, Triple<FirFile, FirSession, ScopeSession>>,
|
||||||
firFilesAndSessionsBySourceFile: Map<KtSourceFile, Triple<FirFile, FirSession, ScopeSession>>,
|
bodiesOnlyForInlines: Boolean = false,
|
||||||
bodiesOnlyForInlines: Boolean = false,
|
skipPrivateApi: Boolean = false,
|
||||||
skipPrivateApi: Boolean = false,
|
serializeSingleFile: (FirFile, FirSession, ScopeSession) -> ProtoBuf.PackageFragment
|
||||||
serializeSingleFile: (FirFile, FirSession, ScopeSession) -> ProtoBuf.PackageFragment
|
|
||||||
): SerializerOutput {
|
): SerializerOutput {
|
||||||
if (moduleFragment != null) {
|
if (moduleFragment != null) {
|
||||||
assert(files.size == moduleFragment.files.size)
|
assert(files.size == moduleFragment.files.size)
|
||||||
|
|||||||
Reference in New Issue
Block a user