63b0708ed5
For example:
foo(
// `if` joins A & B
if (condition)
run { ... } // A
else
run { ... }, // B
run { ... } // C
) // `foo` unifies `A & B` and `C`, so if it is not resolved itself,
// further `if`s, `when`s, safe calls outside it, etc. continue
// building the correct type predicate until the next completed
// call.
^KT-44512 Fixed
12 lines
305 B
Kotlin
Vendored
12 lines
305 B
Kotlin
Vendored
// KT-9051: Allow smart cast for captured variables if they are not modified
|
|
|
|
fun bar(z: String?) = z
|
|
|
|
fun foo(y: String?) {
|
|
var x: String? = ""
|
|
if (x != null) {
|
|
bar(y?.let { x = null; it })<!UNSAFE_CALL!>.<!>length
|
|
x<!UNSAFE_CALL!>.<!>length // Smart cast is not possible
|
|
}
|
|
}
|