Refine visibility computation for lateinit's field in KtUltraLightClass
This commit is contained in:
@@ -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
|
||||
}
|
||||
+5
@@ -104,6 +104,11 @@ public class UltraLightClassLoadingTestGenerated extends AbstractUltraLightClass
|
||||
runTest("compiler/testData/asJava/ultraLightClasses/jvmOverloads.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("lateinitProperty.kt")
|
||||
public void testLateinitProperty() throws Exception {
|
||||
runTest("compiler/testData/asJava/ultraLightClasses/lateinitProperty.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("objects.kt")
|
||||
public void testObjects() throws Exception {
|
||||
runTest("compiler/testData/asJava/ultraLightClasses/objects.kt");
|
||||
|
||||
Reference in New Issue
Block a user