Metadata: 'non-stable parameter names' flag for callables

^KT-34602
This commit is contained in:
Dmitriy Dolovov
2020-07-20 18:21:34 +07:00
parent 8cace2bab4
commit 3d9093583f
16 changed files with 334 additions and 15 deletions
@@ -291,6 +291,14 @@ class DescriptorSerializer private constructor(
else
descriptor.visibility
private fun shouldSerializeHasStableParameterNames(descriptor: CallableMemberDescriptor): Boolean {
return when {
descriptor.hasStableParameterNames() -> true
descriptor.kind == CallableMemberDescriptor.Kind.DELEGATION -> true // remove this line to fix KT-4758
else -> false
}
}
fun functionProto(descriptor: FunctionDescriptor): ProtoBuf.Function.Builder? {
if (!extension.shouldSerializeFunction(descriptor)) return null
@@ -304,7 +312,7 @@ class DescriptorSerializer private constructor(
ProtoEnumFlags.modality(descriptor.modality),
ProtoEnumFlags.memberKind(descriptor.kind),
descriptor.isOperator, descriptor.isInfix, descriptor.isInline, descriptor.isTailrec, descriptor.isExternal,
descriptor.isSuspend, descriptor.isExpect
descriptor.isSuspend, descriptor.isExpect, shouldSerializeHasStableParameterNames(descriptor)
)
if (flags != builder.flags) {
builder.flags = flags
@@ -367,7 +375,8 @@ class DescriptorSerializer private constructor(
val local = createChildSerializer(descriptor)
val flags = Flags.getConstructorFlags(
hasAnnotations(descriptor), ProtoEnumFlags.visibility(normalizeVisibility(descriptor)), !descriptor.isPrimary
hasAnnotations(descriptor), ProtoEnumFlags.visibility(normalizeVisibility(descriptor)), !descriptor.isPrimary,
shouldSerializeHasStableParameterNames(descriptor)
)
if (flags != builder.flags) {
builder.flags = flags