Provide SerializerExtension methods with child DescriptorSerializer instance

to make Native be able to serialize backing properties and inline bodies.
Change visibility for functions and properties of DescriptorSerializer.
This commit is contained in:
Pavel Punegov
2018-10-30 18:57:13 +03:00
committed by Pavel Punegov
parent 726b9272f3
commit fe0a2bc75e
6 changed files with 84 additions and 55 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTabl
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.source.PsiSourceFile
import org.jetbrains.kotlin.serialization.DescriptorSerializer
import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase
import org.jetbrains.kotlin.types.FlexibleType
@@ -41,35 +42,39 @@ class KotlinJavascriptSerializerExtension(
}
override fun serializeClass(
descriptor: ClassDescriptor,
proto: ProtoBuf.Class.Builder,
versionRequirementTable: MutableVersionRequirementTable
descriptor: ClassDescriptor,
proto: ProtoBuf.Class.Builder,
versionRequirementTable: MutableVersionRequirementTable,
childSerializer: DescriptorSerializer
) {
val id = getFileId(descriptor)
if (id != null) {
proto.setExtension(JsProtoBuf.classContainingFileId, id)
}
super.serializeClass(descriptor, proto, versionRequirementTable)
super.serializeClass(descriptor, proto, versionRequirementTable, childSerializer)
}
override fun serializeProperty(
descriptor: PropertyDescriptor,
proto: ProtoBuf.Property.Builder,
versionRequirementTable: MutableVersionRequirementTable
descriptor: PropertyDescriptor,
proto: ProtoBuf.Property.Builder,
versionRequirementTable: MutableVersionRequirementTable,
childSerializer: DescriptorSerializer
) {
val id = getFileId(descriptor)
if (id != null) {
proto.setExtension(JsProtoBuf.propertyContainingFileId, id)
}
super.serializeProperty(descriptor, proto, versionRequirementTable)
super.serializeProperty(descriptor, proto, versionRequirementTable, childSerializer)
}
override fun serializeFunction(descriptor: FunctionDescriptor, proto: ProtoBuf.Function.Builder) {
override fun serializeFunction(descriptor: FunctionDescriptor,
proto: ProtoBuf.Function.Builder,
childSerializer: DescriptorSerializer) {
val id = getFileId(descriptor)
if (id != null) {
proto.setExtension(JsProtoBuf.functionContainingFileId, id)
}
super.serializeFunction(descriptor, proto)
super.serializeFunction(descriptor, proto, childSerializer)
}
private fun getFileId(descriptor: DeclarationDescriptor): Int? {