[FIR2IR] Set proper visibility of backing fields

This commit is contained in:
Jinseong Jeon
2020-03-31 11:47:46 +03:00
committed by Mikhail Glukhikh
parent 6a1923a477
commit ff104f4037
10 changed files with 45 additions and 42 deletions
@@ -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,