Allow not providing IR to serialize a klib with just the frontend metadata

This commit is contained in:
Sergey Igushkin
2019-12-11 16:09:16 +03:00
parent cea0f08049
commit 28e0089259
2 changed files with 7 additions and 4 deletions
@@ -45,8 +45,8 @@ abstract class KlibMetadataSerializer(
var classSerializer: DescriptorSerializer = topSerializer var classSerializer: DescriptorSerializer = topSerializer
) )
private fun declarationTableHandler(declarationDescriptor: DeclarationDescriptor): KlibMetadataProtoBuf.DescriptorUniqId { private fun declarationTableHandler(declarationDescriptor: DeclarationDescriptor): KlibMetadataProtoBuf.DescriptorUniqId? {
val index = descriptorTable.get(declarationDescriptor) ?: error("No descriptor ID found for $declarationDescriptor") val index = descriptorTable.get(declarationDescriptor) ?: return null
return newDescriptorUniqId(index) return newDescriptorUniqId(index)
} }
@@ -89,7 +89,7 @@ class KoltinLibraryWriterImpl(
fun buildKoltinLibrary( fun buildKoltinLibrary(
linkDependencies: List<KotlinLibrary>, linkDependencies: List<KotlinLibrary>,
metadata: SerializedMetadata, metadata: SerializedMetadata,
ir: SerializedIrModule, ir: SerializedIrModule?,
versions: KotlinLibraryVersioning, versions: KotlinLibraryVersioning,
output: String, output: String,
moduleName: String, moduleName: String,
@@ -101,7 +101,10 @@ fun buildKoltinLibrary(
val library = KoltinLibraryWriterImpl(File(output), moduleName, versions, nopack) val library = KoltinLibraryWriterImpl(File(output), moduleName, versions, nopack)
library.addMetadata(metadata) library.addMetadata(metadata)
library.addIr(ir)
if (ir != null) {
library.addIr(ir)
}
manifestProperties?.let { library.addManifestAddend(it) } manifestProperties?.let { library.addManifestAddend(it) }
library.addLinkDependencies(linkDependencies) library.addLinkDependencies(linkDependencies)