FIR: fix serialization of accessor with source-level annotations

This commit is contained in:
Mikhail Glukhikh
2021-01-28 09:17:17 +03:00
parent 72b07c727b
commit 1c80c5610d
6 changed files with 53 additions and 2 deletions
@@ -714,11 +714,12 @@ class FirElementSerializer private constructor(
private fun getAccessorFlags(accessor: FirPropertyAccessor, property: FirProperty): Int {
// [FirDefaultPropertyAccessor]---a property accessor without body---can still hold other information, such as annotations,
// user-contributed visibility, and modifiers, such as `external` or `inline`.
val nonSourceAnnotations = accessor.nonSourceAnnotations(session)
val isDefault = accessor is FirDefaultPropertyAccessor &&
accessor.annotations.isEmpty() && accessor.visibility == property.visibility &&
nonSourceAnnotations.isEmpty() && accessor.visibility == property.visibility &&
!accessor.isExternal && !accessor.isInline
return Flags.getAccessorFlags(
accessor.nonSourceAnnotations(session).isNotEmpty(),
nonSourceAnnotations.isNotEmpty(),
ProtoEnumFlags.visibility(normalizeVisibility(accessor)),
ProtoEnumFlags.modality(accessor.modality!!),
!isDefault,