[klib] Don't pass around metadata serialization closure
Pass the metadata serializer instance instead. This allows to further reduce code duplication by introducing the common interface `KlibSingleFileMetadataSerializer` for abstracting away K1 and K2 representation of a source file, as well as reusing `Fir2KlibMetadataSerializer` across different backends. KT-64392
This commit is contained in:
committed by
Space Team
parent
5a6f51e474
commit
f39335b3f7
@@ -12,7 +12,6 @@ import com.intellij.openapi.vfs.VfsUtilCore
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import com.intellij.psi.PsiManager
|
||||
import org.jetbrains.kotlin.ir.KtDiagnosticReporterWithImplicitIrBasedContext
|
||||
import org.jetbrains.kotlin.KtPsiSourceFile
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||
import org.jetbrains.kotlin.backend.common.linkage.issues.checkNoUnboundSymbols
|
||||
import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageSupportForLinker
|
||||
@@ -485,7 +484,6 @@ class GenerateIrRuntime {
|
||||
return psi2IrTranslator.generateModuleFragment(psi2IrContext, files, irProviders, emptyList())
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
private fun doSerializeModule(
|
||||
moduleFragment: IrModuleFragment,
|
||||
bindingContext: BindingContext,
|
||||
@@ -494,12 +492,19 @@ class GenerateIrRuntime {
|
||||
): String {
|
||||
val diagnosticReporter = DiagnosticReporterFactory.createPendingReporter()
|
||||
val tmpKlibDir = createTempDirectory().also { it.toFile().deleteOnExit() }.toString()
|
||||
val metadataSerializer = KlibMetadataIncrementalSerializer(configuration, project, false)
|
||||
val metadataSerializer = KlibMetadataIncrementalSerializer(
|
||||
files,
|
||||
configuration,
|
||||
project,
|
||||
bindingContext,
|
||||
moduleFragment.descriptor,
|
||||
allowErrorTypes = false,
|
||||
)
|
||||
serializeModuleIntoKlib(
|
||||
moduleName,
|
||||
configuration,
|
||||
diagnosticReporter,
|
||||
files.map(::KtPsiSourceFile),
|
||||
metadataSerializer,
|
||||
tmpKlibDir,
|
||||
emptyList(),
|
||||
moduleFragment,
|
||||
@@ -507,10 +512,8 @@ class GenerateIrRuntime {
|
||||
true,
|
||||
perFile,
|
||||
abiVersion = KotlinAbiVersion.CURRENT,
|
||||
jsOutputName = null
|
||||
) { file ->
|
||||
metadataSerializer.serializeScope(file, bindingContext, moduleFragment.descriptor)
|
||||
}
|
||||
jsOutputName = null,
|
||||
)
|
||||
|
||||
return tmpKlibDir
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user