Refine visibility computation for lateinit's field in KtUltraLightClass

This commit is contained in:
Denis Zharkov
2018-11-01 14:46:05 +03:00
parent 99afc40d93
commit 8999a21764
3 changed files with 52 additions and 2 deletions
@@ -199,8 +199,11 @@ class KtUltraLightClass(classOrObject: KtClassOrObject, private val support: Ult
val visibility = when {
property.hasModifier(PRIVATE_KEYWORD) -> PsiModifier.PRIVATE
property.hasModifier(PROTECTED_KEYWORD) && property.hasModifier(LATEINIT_KEYWORD) -> PsiModifier.PROTECTED
property.hasModifier(CONST_KEYWORD) || (property.hasModifier(LATEINIT_KEYWORD) && property.setter == null) -> PsiModifier.PUBLIC
property.hasModifier(LATEINIT_KEYWORD) -> {
val declaration = property.setter ?: property
simpleVisibility(declaration)
}
property.hasModifier(CONST_KEYWORD) -> PsiModifier.PUBLIC
else -> PsiModifier.PRIVATE
}
val modifiers = hashSetOf(visibility)
@@ -0,0 +1,42 @@
open class A {
lateinit var a: String
lateinit var b: String
private set
lateinit var c: String
protected set
lateinit var d: String
internal set
}
open class B {
internal lateinit var a: String
internal lateinit var b: String
private set
internal lateinit var c: String
protected set
internal lateinit var d: String
internal set
}
open class C {
protected lateinit var a: String
protected lateinit var b: String
private set
protected lateinit var c: String
protected set
}
open class D {
private lateinit var a: String
private lateinit var b: String
private set
}