From b52b90c182876c81cb8f62eaf9a77118895ca172 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 1 Feb 2017 15:03:28 +0300 Subject: [PATCH] Extract serialization of packageFqName extension to SerializerExtensionBase --- .../builtins/BuiltInsSerializerExtension.kt | 9 +-------- .../kotlin/serialization/SerializerExtensionBase.kt | 10 +++++++++- .../kotlin/builtins/BuiltInSerializerProtocol.kt | 1 + .../serialization/SerializerExtensionProtocol.kt | 1 + .../js/KotlinJavascriptSerializationUtil.kt | 4 +--- .../js/KotlinJavascriptSerializerExtension.kt | 10 +++------- 6 files changed, 16 insertions(+), 19 deletions(-) diff --git a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerExtension.kt b/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerExtension.kt index 68a3522ec97..1fec80268b2 100644 --- a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerExtension.kt +++ b/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerExtension.kt @@ -19,14 +19,7 @@ package org.jetbrains.kotlin.serialization.builtins import org.jetbrains.kotlin.builtins.BuiltInSerializerProtocol import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase -import org.jetbrains.kotlin.serialization.ProtoBuf -class BuiltInsSerializerExtension( - private val packageFqName: FqName -) : KotlinSerializerExtensionBase(BuiltInSerializerProtocol) { +class BuiltInsSerializerExtension(packageFqName: FqName) : KotlinSerializerExtensionBase(BuiltInSerializerProtocol, packageFqName) { override fun shouldUseTypeTable(): Boolean = true - - override fun serializePackage(proto: ProtoBuf.Package.Builder) { - proto.setExtension(BuiltInsProtoBuf.packageFqName, stringTable.getPackageFqNameIndex(packageFqName)) - } } diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt index 6c4b03aabd6..d38acaf521c 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt @@ -17,10 +17,14 @@ package org.jetbrains.kotlin.serialization import org.jetbrains.kotlin.descriptors.* +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) : SerializerExtension() { +open class KotlinSerializerExtensionBase( + private val protocol: SerializerExtensionProtocol, + private val packageFqName: FqName +) : SerializerExtension() { override val stringTable = StringTableImpl() override fun serializeClass(descriptor: ClassDescriptor, proto: ProtoBuf.Class.Builder) { @@ -29,6 +33,10 @@ open class KotlinSerializerExtensionBase(private val protocol: SerializerExtensi } } + override fun serializePackage(proto: ProtoBuf.Package.Builder) { + proto.setExtension(protocol.packageFqName, stringTable.getPackageFqNameIndex(packageFqName)) + } + override fun serializeConstructor(descriptor: ConstructorDescriptor, proto: ProtoBuf.Constructor.Builder) { for (annotation in descriptor.annotations) { proto.addExtension(protocol.constructorAnnotation, annotationSerializer.serializeAnnotation(annotation)) diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/BuiltInSerializerProtocol.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/BuiltInSerializerProtocol.kt index c9c3cd80c6b..a6e591bd0ff 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/BuiltInSerializerProtocol.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/BuiltInSerializerProtocol.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf object BuiltInSerializerProtocol : SerializerExtensionProtocol( ExtensionRegistryLite.newInstance().apply { BuiltInsProtoBuf.registerAllExtensions(this) }, + BuiltInsProtoBuf.packageFqName, BuiltInsProtoBuf.constructorAnnotation, BuiltInsProtoBuf.classAnnotation, BuiltInsProtoBuf.functionAnnotation, BuiltInsProtoBuf.propertyAnnotation, BuiltInsProtoBuf.enumEntryAnnotation, BuiltInsProtoBuf.compileTimeValue, BuiltInsProtoBuf.parameterAnnotation, BuiltInsProtoBuf.typeAnnotation, BuiltInsProtoBuf.typeParameterAnnotation diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionProtocol.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionProtocol.kt index 00a821e5888..cff9dca3794 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionProtocol.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionProtocol.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension open class SerializerExtensionProtocol( val extensionRegistry: ExtensionRegistryLite, + val packageFqName: GeneratedExtension, val constructorAnnotation: GeneratedExtension>, val classAnnotation: GeneratedExtension>, val functionAnnotation: GeneratedExtension>, 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 039388ee498..fefdbb7ecb2 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 @@ -119,9 +119,7 @@ object KotlinJavascriptSerializationUtil { val members = fragments .flatMap { fragment -> DescriptorUtils.getAllDescriptors(fragment.getMemberScope()) } .filterNot(skip) - builder.`package` = serializer.packagePartProto(members).apply { - setExtension(JsProtoBuf.packageFqName, stringTable.getPackageFqNameIndex(fqName)) - }.build() + builder.`package` = serializer.packagePartProto(members).build() builder.setExtension( JsProtoBuf.packageFragmentFiles, diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerExtension.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerExtension.kt index 7a9fd279a93..b3de85cd478 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerExtension.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerExtension.kt @@ -26,13 +26,12 @@ import org.jetbrains.kotlin.resolve.source.PsiSourceFile import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol -import org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf import org.jetbrains.kotlin.types.FlexibleType class KotlinJavascriptSerializerExtension( private val fileRegistry: KotlinFileRegistry, - private val packageFqName: FqName -) : KotlinSerializerExtensionBase(JsSerializerProtocol) { + packageFqName: FqName +) : KotlinSerializerExtensionBase(JsSerializerProtocol, packageFqName) { override val stringTable = JavaScriptStringTable() override fun serializeFlexibleType(flexibleType: FlexibleType, lowerProto: ProtoBuf.Type.Builder, upperProto: ProtoBuf.Type.Builder) { @@ -47,10 +46,6 @@ class KotlinJavascriptSerializerExtension( super.serializeClass(descriptor, proto) } - override fun serializePackage(proto: ProtoBuf.Package.Builder) { - proto.setExtension(BuiltInsProtoBuf.packageFqName, stringTable.getPackageFqNameIndex(packageFqName)) - } - override fun serializeProperty(descriptor: PropertyDescriptor, proto: ProtoBuf.Property.Builder) { val id = getFileId(descriptor) if (id != null) { @@ -80,6 +75,7 @@ class KotlinJavascriptSerializerExtension( object JsSerializerProtocol : SerializerExtensionProtocol( ExtensionRegistryLite.newInstance().apply { JsProtoBuf.registerAllExtensions(this) }, + JsProtoBuf.packageFqName, JsProtoBuf.constructorAnnotation, JsProtoBuf.classAnnotation, JsProtoBuf.functionAnnotation, JsProtoBuf.propertyAnnotation, JsProtoBuf.enumEntryAnnotation, JsProtoBuf.compileTimeValue, JsProtoBuf.parameterAnnotation, JsProtoBuf.typeAnnotation, JsProtoBuf.typeParameterAnnotation