Files
kotlin-fork/compiler/fir/analysis-tests/testData/resolve/smartcasts/controlStructures/smartcastFromArgument.txt
T
Dmitriy Novozhilov 102c9c08d0 [FIR] Resolve elvis call as special synthetic call
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
2020-07-02 15:10:51 +03:00

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|()
}
}
}