Refactor serialization of package FQ name extension

Instead of requiring to pass it in SerializerExtensionBase's
constructor, pass it always in serializePackage. This is more
straightforward and helps in a situation where one SerializerExtension
instance is used for the whole module, not one per-package
This commit is contained in:
Alexander Udalov
2017-03-03 19:15:04 +03:00
parent c952e26cbb
commit 7c22113c34
10 changed files with 19 additions and 24 deletions
@@ -141,11 +141,11 @@ open class MetadataSerializer(private val dependOnOldBuiltIns: Boolean) {
protected inner class PackageSerializer(
private val classes: Collection<DeclarationDescriptor>,
private val members: Collection<DeclarationDescriptor>,
packageFqName: FqName,
private val packageFqName: FqName,
private val destFile: File
) {
private val proto = ProtoBuf.PackageFragment.newBuilder()
private val extension = BuiltInsSerializerExtension(packageFqName)
private val extension = BuiltInsSerializerExtension()
fun run() {
serializeClasses(classes)
@@ -170,7 +170,7 @@ open class MetadataSerializer(private val dependOnOldBuiltIns: Boolean) {
}
private fun serializeMembers(members: Collection<DeclarationDescriptor>) {
proto.`package` = DescriptorSerializer.createTopLevel(extension).packagePartProto(members).build()
proto.`package` = DescriptorSerializer.createTopLevel(extension).packagePartProto(packageFqName, members).build()
}
private fun serializeStringTable() {
@@ -17,9 +17,8 @@
package org.jetbrains.kotlin.serialization.builtins
import org.jetbrains.kotlin.builtins.BuiltInSerializerProtocol
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase
class BuiltInsSerializerExtension(packageFqName: FqName) : KotlinSerializerExtensionBase(BuiltInSerializerProtocol, packageFqName) {
class BuiltInsSerializerExtension : KotlinSerializerExtensionBase(BuiltInSerializerProtocol) {
override fun shouldUseTypeTable(): Boolean = true
}