Add getExtensionOrNull utility for protobuf messages

This commit is contained in:
Alexander Udalov
2018-02-07 15:31:21 +01:00
parent 65a6171782
commit 7123202670
11 changed files with 51 additions and 55 deletions
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.serialization.Flags
import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
import org.jetbrains.kotlin.serialization.deserialization.getExtensionOrNull
import org.jetbrains.kotlin.serialization.jvm.BitEncoding
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.JvmMethodSignature
@@ -62,8 +63,8 @@ private fun inlineAccessorsJvmNames(properties: List<ProtoBuf.Property>, nameRes
}
val inlineAccessors = arrayListOf<JvmMethodSignature>()
propertiesWithInlineAccessors.forEach { proto ->
if (proto.hasExtension(JvmProtoBuf.propertySignature)) {
val signature = proto.getExtension(JvmProtoBuf.propertySignature)
val signature = proto.getExtensionOrNull(JvmProtoBuf.propertySignature)
if (signature != null) {
if (proto.hasGetterFlags() && Flags.IS_INLINE_ACCESSOR.get(proto.getterFlags)) {
inlineAccessors.add(signature.getter)
}
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor
import org.jetbrains.kotlin.serialization.deserialization.getExtensionOrNull
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf
fun getJvmModuleNameForDeserializedDescriptor(descriptor: DeclarationDescriptor): String? {
@@ -20,8 +21,7 @@ fun getJvmModuleNameForDeserializedDescriptor(descriptor: DeclarationDescriptor)
parent is DeserializedClassDescriptor -> {
val classProto = parent.classProto
val nameResolver = parent.c.nameResolver
return classProto.getExtension(JvmProtoBuf.classModuleName)
?.takeIf { classProto.hasExtension(JvmProtoBuf.classModuleName) }
return classProto.getExtensionOrNull(JvmProtoBuf.classModuleName)
?.let(nameResolver::getString)
?: JvmAbi.DEFAULT_MODULE_NAME
}
@@ -30,8 +30,7 @@ fun getJvmModuleNameForDeserializedDescriptor(descriptor: DeclarationDescriptor)
if (source is JvmPackagePartSource) {
val packageProto = source.packageProto
val nameResolver = source.nameResolver
return packageProto.getExtension(JvmProtoBuf.packageModuleName)
?.takeIf { packageProto.hasExtension(JvmProtoBuf.packageModuleName) }
return packageProto.getExtensionOrNull(JvmProtoBuf.packageModuleName)
?.let(nameResolver::getString)
?: JvmAbi.DEFAULT_MODULE_NAME
}