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:
+3
-5
@@ -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
|
||||
}
|
||||
|
||||
+2
-1
@@ -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) {
|
||||
|
||||
+2
-5
@@ -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))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user