Files
kotlin/compiler/testData/codegen/bytecodeText/nullCheckOptimization/localLateinit/checkedAlways.kt
Dmitry Petrov 78b69cad77 Support lateinit local vars in redundant null check elimination
Lateinit local vars are guaranteed to be non-null after store.
So we mark such stores as storing non-null value
(could be useful for some other constructs, too),
and optimize null checks accordingly.
2017-08-31 11:28:08 +03:00

26 lines
548 B
Kotlin
Vendored

// LANGUAGE_VERSION: 1.2
fun almostAlwaysTrue() = true
fun runNoInline(f: () -> Unit) = f()
fun test() {
lateinit var z: String
runNoInline {
// NB this code can be executed in a different thread multiple times, each time with different results.
// So, 'z' can be initialized at any moment, and should be checked on every read.
if (almostAlwaysTrue()) {
z = ""
}
}
println(z)
println(z)
println(z)
}
// 0 IFNULL
// 3 IFNONNULL
// 3 throwUninitializedPropertyAccessException