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,
|
descriptor, Interner(typeParameters), extension, typeTable, versionRequirementTable,
|
||||||
serializeTypeTableToFunction = false, typeAttributeTranslators = typeAttributeTranslators,
|
serializeTypeTableToFunction = false, typeAttributeTranslators = typeAttributeTranslators,
|
||||||
languageVersionSettings = languageVersionSettings,
|
languageVersionSettings = languageVersionSettings,
|
||||||
|
plugins = plugins,
|
||||||
)
|
)
|
||||||
|
|
||||||
val stringTable: DescriptorAwareStringTable
|
val stringTable: DescriptorAwareStringTable
|
||||||
@@ -362,6 +363,8 @@ class DescriptorSerializer private constructor(
|
|||||||
|
|
||||||
extension.serializeProperty(descriptor, builder, versionRequirementTable, local)
|
extension.serializeProperty(descriptor, builder, versionRequirementTable, local)
|
||||||
|
|
||||||
|
plugins.forEach { it.afterProperty(descriptor, builder, versionRequirementTable, this, extension) }
|
||||||
|
|
||||||
return builder
|
return builder
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -435,6 +438,8 @@ class DescriptorSerializer private constructor(
|
|||||||
|
|
||||||
extension.serializeFunction(descriptor, builder, versionRequirementTable, local)
|
extension.serializeFunction(descriptor, builder, versionRequirementTable, local)
|
||||||
|
|
||||||
|
plugins.forEach { it.afterFunction(descriptor, builder, versionRequirementTable, this, extension) }
|
||||||
|
|
||||||
if (serializeTypeTableToFunction) {
|
if (serializeTypeTableToFunction) {
|
||||||
typeTable.serialize()?.let { builder.typeTable = it }
|
typeTable.serialize()?.let { builder.typeTable = it }
|
||||||
}
|
}
|
||||||
@@ -497,6 +502,8 @@ class DescriptorSerializer private constructor(
|
|||||||
|
|
||||||
extension.serializeConstructor(descriptor, builder, local)
|
extension.serializeConstructor(descriptor, builder, local)
|
||||||
|
|
||||||
|
plugins.forEach { it.afterConstructor(descriptor, builder, versionRequirementTable, this, extension) }
|
||||||
|
|
||||||
return builder
|
return builder
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -569,6 +576,8 @@ class DescriptorSerializer private constructor(
|
|||||||
|
|
||||||
extension.serializeTypeAlias(descriptor, builder)
|
extension.serializeTypeAlias(descriptor, builder)
|
||||||
|
|
||||||
|
plugins.forEach { it.afterTypealias(descriptor, builder, versionRequirementTable, this, extension) }
|
||||||
|
|
||||||
return builder
|
return builder
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -874,6 +883,7 @@ class DescriptorSerializer private constructor(
|
|||||||
null, Interner(), extension, MutableTypeTable(), MutableVersionRequirementTable(), serializeTypeTableToFunction = false,
|
null, Interner(), extension, MutableTypeTable(), MutableVersionRequirementTable(), serializeTypeTableToFunction = false,
|
||||||
typeAttributeTranslators = project?.let { TypeAttributeTranslatorExtension.createTranslators(it) },
|
typeAttributeTranslators = project?.let { TypeAttributeTranslatorExtension.createTranslators(it) },
|
||||||
languageVersionSettings = languageVersionSettings,
|
languageVersionSettings = languageVersionSettings,
|
||||||
|
plugins = project?.let { DescriptorSerializerPlugin.getInstances(it) }.orEmpty(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
|||||||
+37
-1
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.serialization
|
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.extensions.ProjectExtensionDescriptor
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
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>(
|
companion object : ProjectExtensionDescriptor<DescriptorSerializerPlugin>(
|
||||||
"org.jetbrains.kotlin.DescriptorSerializerPlugin", DescriptorSerializerPlugin::class.java)
|
"org.jetbrains.kotlin.DescriptorSerializerPlugin", DescriptorSerializerPlugin::class.java)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user