[NI] Finish analysis for coerced last lambda expressions if needed

This commit is contained in:
Mikhail Zarechenskiy
2020-02-11 09:02:31 +03:00
parent 220bf6d62f
commit 4542f3b720
34 changed files with 145 additions and 55 deletions
@@ -52,7 +52,7 @@ fun testUnit() {
fun testParameter() {
takeFnToParameter { }
takeFnToParameter { Unit }
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>takeFnToParameter<!> { <!UNRESOLVED_REFERENCE!>unresolved<!>() }
takeFnToParameter { <!UNRESOLVED_REFERENCE!>unresolved<!>() }
takeFnToParameter { if (true) <!UNRESOLVED_REFERENCE!>unresolved<!>() }
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>takeFnToParameter<!> {
if (true) <!UNRESOLVED_REFERENCE!>unresolved<!>() else <!UNRESOLVED_REFERENCE!>unresolved<!>()
@@ -66,7 +66,7 @@ fun testParameter() {
takeFnToParameter(fun(): Unit { return Unit })
takeFnToParameter(fun() { if (true) return })
takeFnToParameter(fun() { if (true) return Unit })
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>takeFnToParameter<!>(fun() = <!UNRESOLVED_REFERENCE!>unresolved<!>())
takeFnToParameter(fun() = <!UNRESOLVED_REFERENCE!>unresolved<!>())
takeFnToParameter(fun() { <!UNRESOLVED_REFERENCE!>unresolved<!>() })
takeFnToParameter(fun(): Unit { <!UNRESOLVED_REFERENCE!>unresolved<!>() })
takeFnToParameter(fun() { return <!UNRESOLVED_REFERENCE!>unresolved<!>() })
@@ -24,7 +24,7 @@ fun foo(): String? {
run {
if (true) {
<!IMPLICIT_CAST_TO_ANY!>Obj()<!>
Obj()
} else
<!INVALID_IF_AS_EXPRESSION!>if<!> (true) return null // Error, coercion to Unit doesn't propagate inside nested lambdas
}