Check whether the field is indeed being initialized
in checkFieldInExactlyOnceLambdaInitialization #KT-40691 Fixed
This commit is contained in:
+71
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user