[FIR2IR] Set proper visibility of backing fields
This commit is contained in:
committed by
Mikhail Glukhikh
parent
6a1923a477
commit
ff104f4037
+9
-2
@@ -145,12 +145,12 @@ internal class ClassMemberGenerator(
|
||||
) {
|
||||
irProperty.backingField = irProperty.createBackingField(
|
||||
property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor,
|
||||
Visibilities.PRIVATE, property.name, property.isVal, initializer, propertyType
|
||||
property.fieldVisibility, property.name, property.isVal, initializer, propertyType
|
||||
)
|
||||
} else if (delegate != null) {
|
||||
irProperty.backingField = irProperty.createBackingField(
|
||||
property, IrDeclarationOrigin.PROPERTY_DELEGATE, descriptor,
|
||||
Visibilities.PRIVATE, Name.identifier("${property.name}\$delegate"), true, delegate
|
||||
property.fieldVisibility, Name.identifier("${property.name}\$delegate"), true, delegate
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -168,6 +168,13 @@ internal class ClassMemberGenerator(
|
||||
return irProperty
|
||||
}
|
||||
|
||||
private val FirProperty.fieldVisibility: Visibility
|
||||
get() = when {
|
||||
isLateInit -> setter?.visibility ?: status.visibility
|
||||
isConst -> status.visibility
|
||||
else -> Visibilities.PRIVATE
|
||||
}
|
||||
|
||||
private fun IrProperty.createBackingField(
|
||||
property: FirProperty,
|
||||
origin: IrDeclarationOrigin,
|
||||
|
||||
Reference in New Issue
Block a user