102c9c08d0
Before that commit we desugared `a ?: b` as
when (val elvis = a) {
null -> b
else -> elvis
}
It was incorrect, because `a` should be resolved in dependent mode,
but when it was `elvis` initializer it was resolved in independent
mode, so we can't infer type for `a` in some complex cases
17 lines
449 B
Plaintext
Vendored
17 lines
449 B
Plaintext
Vendored
FILE: smartcastFromArgument.kt
|
|
public abstract interface A : R|kotlin/Any| {
|
|
public abstract fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public final fun takeA(a: R|A|): R|kotlin/Boolean| {
|
|
^takeA Boolean(true)
|
|
}
|
|
public final fun test(a: R|kotlin/Any|): R|kotlin/Unit| {
|
|
when () {
|
|
R|/takeA|((R|<local>/a| as? R|A|) ?: ^test Unit) -> {
|
|
R|<local>/a|.R|/A.foo|()
|
|
}
|
|
}
|
|
|
|
}
|