Check whether the field is indeed being initialized

in checkFieldInExactlyOnceLambdaInitialization
 #KT-40691 Fixed
This commit is contained in:
Ilmir Usmanov
2020-07-30 14:13:51 +02:00
parent d8b76f5b26
commit 2c205410fa
12 changed files with 242 additions and 2 deletions
@@ -58,3 +58,74 @@ class Test {
}
}
}
@kotlin.contracts.ExperimentalContracts
class Test1 {
val a: String = ""
val b: String = ""
val c: String = ""
val d: String = ""
init {
inlineMe {
<!VAL_REASSIGNMENT!>a<!> += "allowed"
}
crossinlineMe {
<!CAPTURED_VAL_INITIALIZATION, VAL_REASSIGNMENT!>b<!> += "not allowed"
}
noinlineMe {
<!CAPTURED_VAL_INITIALIZATION, VAL_REASSIGNMENT!>c<!> += "not allowed"
}
notinline {
<!CAPTURED_VAL_INITIALIZATION, VAL_REASSIGNMENT!>d<!> += "not allowed"
}
}
}
@kotlin.contracts.ExperimentalContracts
class Test2 {
val a: String = ""
val b: String = ""
val c: String = ""
val d: String = ""
init {
var blackhole = ""
inlineMe {
blackhole += a
}
crossinlineMe {
blackhole += b
}
noinlineMe {
blackhole += c
}
notinline {
blackhole += d
}
}
}
@kotlin.contracts.ExperimentalContracts
class Test4 {
val a: String = ""
val b: String = ""
val c: String = ""
val d: String = ""
init {
var <!ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE!>blackhole<!>: String
inlineMe {
blackhole = a
}
crossinlineMe {
blackhole = b
}
noinlineMe {
blackhole = c
}
notinline {
blackhole = d
}
}
}