[K2/N] Fix property accessors modality in K2 metadata

^KT-56603
This commit is contained in:
Pavel Kunyavskiy
2023-03-16 15:48:44 +01:00
committed by Space Team
parent aa3c189d83
commit b01cc1f88c
8 changed files with 63 additions and 7 deletions
@@ -79,18 +79,22 @@ class DeclarationPrinter(
override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, data: Unit) {
printer.printPlain(header = headerRenderer.render(descriptor), signature = signatureRenderer.render(descriptor))
descriptor.getter?.takeIf { !it.annotations.isEmpty() }?.let { getter ->
descriptor.getter?.takeUnless { canSkipAccessor(it, descriptor) }?.let { getter ->
printer.pushIndent()
printer.printPlain(header = headerRenderer.render(getter), signature = signatureRenderer.render(getter))
printer.popIndent()
}
descriptor.setter?.takeIf { !it.annotations.isEmpty() || it.visibility != descriptor.visibility }?.let { setter ->
descriptor.setter?.takeUnless { canSkipAccessor(it, descriptor) }?.let { setter ->
printer.pushIndent()
printer.printPlain(header = headerRenderer.render(setter), signature = signatureRenderer.render(setter))
printer.popIndent()
}
}
private fun canSkipAccessor(accessor: PropertyAccessorDescriptor, property: PropertyDescriptor) : Boolean {
return accessor.annotations.isEmpty() && accessor.visibility == property.visibility && accessor.modality == property.modality
}
override fun visitConstructorDescriptor(descriptor: ConstructorDescriptor, data: Unit) {
printer.printPlain(header = headerRenderer.render(descriptor), signature = signatureRenderer.render(descriptor))
}
@@ -48,6 +48,9 @@ object DefaultDeclarationHeaderRenderer : DeclarationHeaderRenderer {
if (descriptor.visibility != DescriptorVisibilities.DEFAULT_VISIBILITY) {
append(descriptor.visibility.internalDisplayName).append(" ")
}
if (descriptor.modality != descriptor.correspondingProperty.modality) {
append(descriptor.modality.name.lowercase()).append(" ")
}
when (descriptor) {
is PropertyGetterDescriptor -> append("get")
is PropertySetterDescriptor -> append("set")