From fc7fea48634513d7aea3ac8757f47e8396b001bb Mon Sep 17 00:00:00 2001 From: Anton Bannykh Date: Fri, 12 Apr 2019 20:43:54 +0300 Subject: [PATCH] JS: make .meta.js the same as before --- .../js/KotlinJavascriptSerializationUtil.kt | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt index 7d2fc81de39..965effa32f4 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt @@ -133,7 +133,10 @@ object KotlinJavascriptSerializationUtil { languageVersionSettings = languageVersionSettings ).writeDelimitedTo(stream) asLibrary().writeTo(stream) - appendPackageFragments(stream) + stream.appendPackageFragments() + jsDescriptor.imported.forEach { + stream.writeProto(JsProtoBuf.Library.IMPORTED_MODULE_FIELD_NUMBER, it.toByteArray()) + } } }.toByteArray() @@ -151,24 +154,26 @@ object KotlinJavascriptSerializationUtil { builder.kind = moduleProtoKind } - jsDescriptor.imported.forEach { builder.addImportedModule(it) } - return builder.build() } - private fun appendPackageFragments(stream: OutputStream) { + private fun OutputStream.writeProto(fieldNumber: Int, content: ByteArray) { + // Message header + write((fieldNumber shl 3) or 2) + // Size varint + var size = content.size + while (size > 0x7F) { + write(0x80 or (size and 0x7F)) + size = size ushr 7 + } + write(size) + // Fragment itself + write(content) + } + + private fun OutputStream.appendPackageFragments() { for ((_, fragment) in serializedFragments.entries.sortedBy { (fqName, _) -> fqName.asString() }) { - // Message header - stream.write((JsProtoBuf.Library.PACKAGE_FRAGMENT_FIELD_NUMBER shl 3) or 2) - // Size varint - var size = fragment.size - while (size > 0x7F) { - stream.write(0x80 or (size and 0x7F)) - size = size ushr 7 - } - stream.write(size) - // Fragment itself - stream.write(fragment) + writeProto(JsProtoBuf.Library.PACKAGE_FRAGMENT_FIELD_NUMBER, fragment) } } }