[IRFakeOverrides] Fix accessors visibilities

^KT-65801
This commit is contained in:
Pavel Kunyavskiy
2024-02-21 12:26:00 +01:00
committed by Space Team
parent acee8da283
commit c991535756
23 changed files with 1413 additions and 5 deletions
@@ -325,19 +325,24 @@ class IrFakeOverrideBuilder(
compatibilityMode: Boolean
) {
val modality = determineModalityForFakeOverride(overridables)
val visibility = findMemberWithMaxVisibility(overridables).override.visibility
val maxVisibilityMember = findMemberWithMaxVisibility(overridables).override
val mostSpecific = selectMostSpecificMember(overridables)
val fakeOverride = mostSpecific.override.apply {
when (this) {
is IrPropertyWithLateBinding -> {
this.visibility = visibility
this.visibility = maxVisibilityMember.visibility
this.modality = modality
this.getter = this.getter?.updateAccessorModalityAndVisibility(modality, visibility)
this.setter = this.setter?.updateAccessorModalityAndVisibility(modality, visibility)
maxVisibilityMember as IrProperty
this.getter = this.getter?.updateAccessorModalityAndVisibility(
modality, (maxVisibilityMember.getter ?: maxVisibilityMember).visibility
)
this.setter = this.setter?.updateAccessorModalityAndVisibility(
modality, (maxVisibilityMember.setter ?: maxVisibilityMember).visibility
)
}
is IrFunctionWithLateBinding -> {
this.visibility = visibility
this.visibility = maxVisibilityMember.visibility
this.modality = modality
}
else -> error("Unexpected fake override kind: $this")