FIR CFG: mark variables touched by not-in-place lambdas in all scopes
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
// FIR_IDENTICAL
|
||||
import kotlin.contracts.*
|
||||
|
||||
@Suppress("OPT_IN_USAGE_ERROR", "OPT_IN_USAGE_FUTURE_ERROR")
|
||||
fun exactlyOnce(f: () -> Unit) {
|
||||
contract {
|
||||
callsInPlace(f, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
f()
|
||||
}
|
||||
|
||||
fun test() {
|
||||
var s: String? = ""
|
||||
if (s != null) {
|
||||
val block: () -> Unit
|
||||
exactlyOnce {
|
||||
block = { s = null }
|
||||
}
|
||||
block()
|
||||
<!SMARTCAST_IMPOSSIBLE!>s<!>.length
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user