[FIR] Check top-level property initialization via CFG
Now that files have a CFG, use it to validate properties are initialized correctly. Update FirTopLevelPropertiesChecker to collect initialization info for the property being checked - similar to FirMemberPropertiesChecker - and validate proper initialization. #KT-56683 Fixed #KT-58531 Fixed
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE
|
||||
// WITH_STDLIB
|
||||
|
||||
val a: Int
|
||||
val b = 1.also { a = 2 }
|
||||
<!MUST_BE_INITIALIZED!>val c: Int<!>
|
||||
val d by lazy { <!CAPTURED_VAL_INITIALIZATION!>c<!> = 2; 1 }
|
||||
val e: Int
|
||||
get() {
|
||||
<!VAL_REASSIGNMENT!>c<!> = 3
|
||||
return c
|
||||
}
|
||||
|
||||
class Class {
|
||||
val i: Int
|
||||
val j = 1.also { i = 2 }
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val k: Int<!>
|
||||
val l by lazy { <!CAPTURED_MEMBER_VAL_INITIALIZATION!>k<!> = 2; 1 }
|
||||
val n: Int
|
||||
get() {
|
||||
<!VAL_REASSIGNMENT!>k<!> = 3
|
||||
return k
|
||||
}
|
||||
}
|
||||
|
||||
fun main() {
|
||||
val x: Int
|
||||
val y = 1.also { x = 2 }
|
||||
val z: Int
|
||||
val w by lazy { <!CAPTURED_VAL_INITIALIZATION!>z<!> = 2; 1 }
|
||||
}
|
||||
Reference in New Issue
Block a user