FIR serializer: regard property accessors with modifiers as non-default

This commit is contained in:
Jinseong Jeon
2020-06-18 15:51:39 -07:00
committed by Mikhail Glukhikh
parent bbfc1a10ad
commit 67044f22ed
2 changed files with 6 additions and 4 deletions
@@ -667,15 +667,18 @@ class FirElementSerializer private constructor(
} }
private fun getAccessorFlags(accessor: FirPropertyAccessor, property: FirProperty): Int { 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 isDefault = accessor is FirDefaultPropertyAccessor && val isDefault = accessor is FirDefaultPropertyAccessor &&
accessor.annotations.isEmpty() && accessor.visibility == property.visibility accessor.annotations.isEmpty() && accessor.visibility == property.visibility &&
!accessor.isExternal && !accessor.isInline
return Flags.getAccessorFlags( return Flags.getAccessorFlags(
accessor.nonSourceAnnotations(session).isNotEmpty(), accessor.nonSourceAnnotations(session).isNotEmpty(),
ProtoEnumFlags.visibility(normalizeVisibility(accessor)), ProtoEnumFlags.visibility(normalizeVisibility(accessor)),
ProtoEnumFlags.modality(accessor.modality!!), ProtoEnumFlags.modality(accessor.modality!!),
!isDefault, !isDefault,
accessor.status.isExternal, accessor.isExternal,
accessor.status.isInline accessor.isInline
) )
} }
@@ -1,5 +1,4 @@
// !LANGUAGE: +ReleaseCoroutines // !LANGUAGE: +ReleaseCoroutines
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6 // IGNORE_BACKEND: JS_IR_ES6
// TODO: muted automatically, investigate should it be ran for JS or not // TODO: muted automatically, investigate should it be ran for JS or not