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
@@ -17,20 +17,18 @@
package org.jetbrains.kotlin.serialization
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
import org.jetbrains.kotlin.builtins.getFunctionalClassKind
import org.jetbrains.kotlin.builtins.isSuspendFunctionType
import org.jetbrains.kotlin.builtins.transformSuspendFunctionToRuntimeFunctionType
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.Annotated
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.protobuf.MessageLite
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry
import org.jetbrains.kotlin.resolve.MemberComparator
import org.jetbrains.kotlin.resolve.constants.NullValue
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
import org.jetbrains.kotlin.serialization.deserialization.descriptors.SinceKotlinInfo
import org.jetbrains.kotlin.types.*
import org.jetbrains.kotlin.types.typeUtil.contains
@@ -543,7 +541,7 @@ class DescriptorSerializer private constructor(
return builder
}
fun packagePartProto(members: Collection<DeclarationDescriptor>): ProtoBuf.Package.Builder {
fun packagePartProto(packageFqName: FqName, members: Collection<DeclarationDescriptor>): ProtoBuf.Package.Builder {
val builder = ProtoBuf.Package.newBuilder()
for (declaration in sort(members)) {
@@ -564,7 +562,7 @@ class DescriptorSerializer private constructor(
builder.sinceKotlinInfoTable = sinceKotlinInfoProto
}
extension.serializePackage(builder)
extension.serializePackage(packageFqName, builder)
return builder
}
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.serialization
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.types.FlexibleType
import org.jetbrains.kotlin.types.KotlinType
@@ -30,7 +31,7 @@ abstract class SerializerExtension {
open fun serializeClass(descriptor: ClassDescriptor, proto: ProtoBuf.Class.Builder) {
}
open fun serializePackage(proto: ProtoBuf.Package.Builder) {
open fun serializePackage(packageFqName: FqName, proto: ProtoBuf.Package.Builder) {
}
open fun serializeConstructor(descriptor: ConstructorDescriptor, proto: ProtoBuf.Constructor.Builder) {
@@ -21,10 +21,7 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.constants.NullValue
import org.jetbrains.kotlin.types.KotlinType
open class KotlinSerializerExtensionBase(
private val protocol: SerializerExtensionProtocol,
private val packageFqName: FqName
) : SerializerExtension() {
open class KotlinSerializerExtensionBase(private val protocol: SerializerExtensionProtocol) : SerializerExtension() {
override val stringTable = StringTableImpl()
override fun serializeClass(descriptor: ClassDescriptor, proto: ProtoBuf.Class.Builder) {
@@ -33,7 +30,7 @@ open class KotlinSerializerExtensionBase(
}
}
override fun serializePackage(proto: ProtoBuf.Package.Builder) {
override fun serializePackage(packageFqName: FqName, proto: ProtoBuf.Package.Builder) {
proto.setExtension(protocol.packageFqName, stringTable.getPackageFqNameIndex(packageFqName))
}