FIR: rewrite lambda return type inference
* `return` should only be added to the last statement if the return type is not Unit * If there is a `return` without an argument, then the expected return type is Unit and the last expression is not a return argument (unless it's an incomplete call, in which case it is inferred to return Unit; this behavior is questionable, but inherited from K1) * There should be a constraint on return arguments even if the expected type is Unit, otherwise errors will be missed * When the expected type is known, using the call completion results writer is pointless (and probably subtly wrong). ^KT-54742 Fixed
This commit is contained in:
+1
-1
@@ -27,7 +27,7 @@ fun testResultOfAnonFun2() =
|
||||
|
||||
fun testReturnFromAnonFun() =
|
||||
run(fun () {
|
||||
return <!RETURN_TYPE_MISMATCH!>if (true) 42 else println()<!>
|
||||
return <!ARGUMENT_TYPE_MISMATCH, RETURN_TYPE_MISMATCH!>if (true) 42 else println()<!>
|
||||
})
|
||||
|
||||
fun <!IMPLICIT_NOTHING_RETURN_TYPE!>testReturn1<!>() =
|
||||
|
||||
Reference in New Issue
Block a user