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
)
private fun declarationTableHandler(declarationDescriptor: DeclarationDescriptor): KlibMetadataProtoBuf.DescriptorUniqId {
val index = descriptorTable.get(declarationDescriptor) ?: error("No descriptor ID found for $declarationDescriptor")
private fun declarationTableHandler(declarationDescriptor: DeclarationDescriptor): KlibMetadataProtoBuf.DescriptorUniqId? {
val index = descriptorTable.get(declarationDescriptor) ?: return null
return newDescriptorUniqId(index)
}
@@ -89,7 +89,7 @@ class KoltinLibraryWriterImpl(
fun buildKoltinLibrary(
linkDependencies: List<KotlinLibrary>,
metadata: SerializedMetadata,
ir: SerializedIrModule,
ir: SerializedIrModule?,
versions: KotlinLibraryVersioning,
output: String,
moduleName: String,
@@ -101,7 +101,10 @@ fun buildKoltinLibrary(
val library = KoltinLibraryWriterImpl(File(output), moduleName, versions, nopack)
library.addMetadata(metadata)
library.addIr(ir)
if (ir != null) {
library.addIr(ir)
}
manifestProperties?.let { library.addManifestAddend(it) }
library.addLinkDependencies(linkDependencies)