b55fda0c55
In order to properly analyze top-level property initialization, a control-flow graph must be created for FirFiles. This change adds the foundation for the file CFG and updates body resolve to create the CFG. Checking the CFG for proper initialization is separated into a following change to ease code review. KT-56683
35 lines
798 B
Kotlin
Vendored
35 lines
798 B
Kotlin
Vendored
// IGNORE_REVERSED_RESOLVE
|
|
// IGNORE_CONTRACT_VIOLATIONS
|
|
// FIR_IDENTICAL
|
|
@Retention(AnnotationRetention.SOURCE)
|
|
@Repeatable
|
|
annotation class Ann(val i: Int)
|
|
annotation class AnnIA(val ia: IntArray)
|
|
annotation class AnnSA(val sa: Array<String>)
|
|
|
|
var i = 1
|
|
|
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>MyClass().i<!>)
|
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>)
|
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i2<!>)
|
|
@AnnIA(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>ia<!>)
|
|
@AnnSA(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>sa<!>)
|
|
class Test {
|
|
val i = 1
|
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>) val i2 = 1
|
|
}
|
|
|
|
val i2 = foo()
|
|
|
|
fun foo(): Int = 1
|
|
|
|
@AnnSA(emptyArray())
|
|
class MyClass {
|
|
val i = 1
|
|
}
|
|
|
|
val ia: IntArray = intArrayOf(1, 2)
|
|
val sa: Array<String> = arrayOf("a", "b")
|
|
|
|
annotation class Ann2
|