RAW FIR: record property accessors' own modality properly
This commit is contained in:
committed by
Dmitriy Novozhilov
parent
e009b71f88
commit
1090eca086
+3
-3
@@ -29,10 +29,10 @@ internal fun isInsideExternalClass(containingClass: FirRegularClass, context: Ch
|
||||
private inline fun isInsideSpecificClass(
|
||||
containingClass: FirRegularClass,
|
||||
context: CheckerContext,
|
||||
specificStatus: (FirRegularClass) -> Boolean
|
||||
predicate: (FirRegularClass) -> Boolean
|
||||
): Boolean =
|
||||
specificStatus.invoke(containingClass) ||
|
||||
context.containingDeclarations.asReversed().any { it is FirRegularClass && specificStatus.invoke(it) }
|
||||
predicate.invoke(containingClass) ||
|
||||
context.containingDeclarations.asReversed().any { it is FirRegularClass && predicate.invoke(it) }
|
||||
|
||||
internal fun FirMemberDeclaration.isEffectivelyExpect(
|
||||
containingClass: FirRegularClass?,
|
||||
|
||||
+1
-1
@@ -1151,7 +1151,7 @@ class DeclarationsConverter(
|
||||
}
|
||||
val status =
|
||||
// Downward propagation of `inline` and `external` modifiers (from property to its accessors)
|
||||
FirDeclarationStatusImpl(accessorVisibility, Modality.FINAL).apply {
|
||||
FirDeclarationStatusImpl(accessorVisibility, modifiers.getModality()).apply {
|
||||
isInline = propertyModifiers.hasInline() || modifiers.hasInline()
|
||||
isExternal = propertyModifiers.hasExternal() || modifiers.hasExternal()
|
||||
}
|
||||
|
||||
@@ -339,7 +339,7 @@ class RawFirBuilder(
|
||||
if (this?.visibility != null && this.visibility != Visibilities.Unknown) this.visibility else property.visibility
|
||||
// Downward propagation of `inline` and `external` modifiers (from property to its accessors)
|
||||
val status =
|
||||
FirDeclarationStatusImpl(accessorVisibility, Modality.FINAL).apply {
|
||||
FirDeclarationStatusImpl(accessorVisibility, this?.modality).apply {
|
||||
isInline = property.hasModifier(INLINE_KEYWORD) ||
|
||||
this@toFirPropertyAccessor?.hasModifier(INLINE_KEYWORD) == true
|
||||
isExternal = property.hasModifier(EXTERNAL_KEYWORD) ||
|
||||
|
||||
@@ -195,8 +195,8 @@ val FirProperty.hasBackingField: Boolean
|
||||
else -> {
|
||||
val getter = getter ?: return true
|
||||
if (isVar && setter == null) return true
|
||||
if (setter?.hasBody == false) return true
|
||||
if (!getter.hasBody) return true
|
||||
if (setter?.hasBody == false && setter?.isAbstract == false) return true
|
||||
if (!getter.hasBody && !getter.isAbstract) return true
|
||||
|
||||
return isReferredViaField == true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user