Private setter for open property: take containing class modality into account #KT-10325 Fixed

This commit is contained in:
Mikhail Glukhikh
2015-12-11 14:00:51 +03:00
parent 470dfc9bec
commit 00504a3f6d
5 changed files with 141 additions and 3 deletions
@@ -681,14 +681,17 @@ class DeclarationsChecker(
}
}
else {
if (propertyDescriptor.modality != Modality.FINAL
if (propertyDescriptor.isOverridable
&& accessorDescriptor.visibility == Visibilities.PRIVATE
&& propertyDescriptor.visibility != Visibilities.PRIVATE) {
if (propertyDescriptor.modality == Modality.ABSTRACT) {
reportVisibilityModifierDiagnostics(tokens.values, Errors.PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY)
}
else {
reportVisibilityModifierDiagnostics(tokens.values, Errors.PRIVATE_SETTER_FOR_OPEN_PROPERTY)
val parentDescriptor = propertyDescriptor.containingDeclaration
if (parentDescriptor !is ClassDescriptor || !parentDescriptor.isFinal) {
reportVisibilityModifierDiagnostics(tokens.values, Errors.PRIVATE_SETTER_FOR_OPEN_PROPERTY)
}
}
}
else if (propertyDescriptor.isLateInit && accessorDescriptor.visibility != propertyDescriptor.visibility) {