Extract serialization of packageFqName extension to SerializerExtensionBase

This commit is contained in:
Alexander Udalov
2017-02-01 15:03:28 +03:00
parent 4e91dadfab
commit b52b90c182
6 changed files with 16 additions and 19 deletions
@@ -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,
@@ -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