Add more methods to DescriptorSerializerPlugin
New methods: afterFunction, afterConstructor, afterProperty, afterTypealias
This commit is contained in:
committed by
teamcity
parent
7db32f6430
commit
dec9704cea
@@ -70,6 +70,7 @@ class DescriptorSerializer private constructor(
|
||||
descriptor, Interner(typeParameters), extension, typeTable, versionRequirementTable,
|
||||
serializeTypeTableToFunction = false, typeAttributeTranslators = typeAttributeTranslators,
|
||||
languageVersionSettings = languageVersionSettings,
|
||||
plugins = plugins,
|
||||
)
|
||||
|
||||
val stringTable: DescriptorAwareStringTable
|
||||
@@ -362,6 +363,8 @@ class DescriptorSerializer private constructor(
|
||||
|
||||
extension.serializeProperty(descriptor, builder, versionRequirementTable, local)
|
||||
|
||||
plugins.forEach { it.afterProperty(descriptor, builder, versionRequirementTable, this, extension) }
|
||||
|
||||
return builder
|
||||
}
|
||||
|
||||
@@ -435,6 +438,8 @@ class DescriptorSerializer private constructor(
|
||||
|
||||
extension.serializeFunction(descriptor, builder, versionRequirementTable, local)
|
||||
|
||||
plugins.forEach { it.afterFunction(descriptor, builder, versionRequirementTable, this, extension) }
|
||||
|
||||
if (serializeTypeTableToFunction) {
|
||||
typeTable.serialize()?.let { builder.typeTable = it }
|
||||
}
|
||||
@@ -497,6 +502,8 @@ class DescriptorSerializer private constructor(
|
||||
|
||||
extension.serializeConstructor(descriptor, builder, local)
|
||||
|
||||
plugins.forEach { it.afterConstructor(descriptor, builder, versionRequirementTable, this, extension) }
|
||||
|
||||
return builder
|
||||
}
|
||||
|
||||
@@ -569,6 +576,8 @@ class DescriptorSerializer private constructor(
|
||||
|
||||
extension.serializeTypeAlias(descriptor, builder)
|
||||
|
||||
plugins.forEach { it.afterTypealias(descriptor, builder, versionRequirementTable, this, extension) }
|
||||
|
||||
return builder
|
||||
}
|
||||
|
||||
@@ -874,6 +883,7 @@ class DescriptorSerializer private constructor(
|
||||
null, Interner(), extension, MutableTypeTable(), MutableVersionRequirementTable(), serializeTypeTableToFunction = false,
|
||||
typeAttributeTranslators = project?.let { TypeAttributeTranslatorExtension.createTranslators(it) },
|
||||
languageVersionSettings = languageVersionSettings,
|
||||
plugins = project?.let { DescriptorSerializerPlugin.getInstances(it) }.orEmpty(),
|
||||
)
|
||||
|
||||
@JvmStatic
|
||||
|
||||
+38
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.serialization
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
||||
@@ -20,6 +20,42 @@ interface DescriptorSerializerPlugin {
|
||||
) {
|
||||
}
|
||||
|
||||
fun afterFunction(
|
||||
descriptor: FunctionDescriptor,
|
||||
proto: ProtoBuf.Function.Builder,
|
||||
versionRequirementTable: MutableVersionRequirementTable?,
|
||||
childSerializer: DescriptorSerializer,
|
||||
extension: SerializerExtension
|
||||
) {
|
||||
}
|
||||
|
||||
fun afterConstructor(
|
||||
descriptor: ConstructorDescriptor,
|
||||
proto: ProtoBuf.Constructor.Builder,
|
||||
versionRequirementTable: MutableVersionRequirementTable?,
|
||||
childSerializer: DescriptorSerializer,
|
||||
extension: SerializerExtension
|
||||
) {
|
||||
}
|
||||
|
||||
fun afterProperty(
|
||||
descriptor: PropertyDescriptor,
|
||||
proto: ProtoBuf.Property.Builder,
|
||||
versionRequirementTable: MutableVersionRequirementTable?,
|
||||
childSerializer: DescriptorSerializer,
|
||||
extension: SerializerExtension
|
||||
) {
|
||||
}
|
||||
|
||||
fun afterTypealias(
|
||||
descriptor: TypeAliasDescriptor,
|
||||
proto: ProtoBuf.TypeAlias.Builder,
|
||||
versionRequirementTable: MutableVersionRequirementTable?,
|
||||
childSerializer: DescriptorSerializer,
|
||||
extension: SerializerExtension
|
||||
) {
|
||||
}
|
||||
|
||||
companion object : ProjectExtensionDescriptor<DescriptorSerializerPlugin>(
|
||||
"org.jetbrains.kotlin.DescriptorSerializerPlugin", DescriptorSerializerPlugin::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user