| //@ edition:2018 |
| |
| fn take_u32(_x: u32) {} |
| |
| async fn make_u32() -> u32 { |
| 22 |
| } |
| |
| #[allow(unused)] |
| async fn suggest_await_in_async_fn() { |
| let x = make_u32(); |
| take_u32(x) |
| //~^ ERROR mismatched types [E0308] |
| //~| HELP consider `await`ing on the `Future` |
| //~| SUGGESTION .await |
| } |
| |
| async fn dummy() {} |
| |
| #[allow(unused)] |
| async fn suggest_await_in_async_fn_return() { |
| dummy() |
| //~^ ERROR mismatched types [E0308] |
| //~| HELP consider `await`ing on the `Future` |
| //~| HELP consider using a semicolon here |
| //~| SUGGESTION .await |
| } |
| |
| #[allow(unused)] |
| async fn suggest_await_on_if() { |
| let _x = if true { |
| dummy() |
| //~^ HELP consider `await`ing on the `Future` |
| } else { |
| dummy().await |
| //~^ ERROR `if` and `else` have incompatible types [E0308] |
| }; |
| } |
| |
| #[allow(unused)] |
| async fn suggest_await_on_previous_match_arms() { |
| let _x = match 0usize { |
| 0 => dummy(), //~ HELP consider `await`ing on the `Future` |
| 1 => dummy(), |
| 2 => dummy().await, |
| //~^ `match` arms have incompatible types [E0308] |
| }; |
| } |
| |
| #[allow(unused)] |
| async fn suggest_await_on_match_expr() { |
| let _x = match dummy() { //~ HELP consider `await`ing on the `Future` |
| () => {} //~ ERROR mismatched types [E0308] |
| }; |
| } |
| |
| async fn dummy_result() -> Result<(), ()> { |
| Ok(()) |
| } |
| |
| #[allow(unused)] |
| async fn suggest_await_in_generic_pattern() { |
| match dummy_result() { |
| //~^ HELP consider `await`ing on the `Future` |
| //~| HELP consider `await`ing on the `Future` |
| //~| SUGGESTION .await |
| Ok(_) => {} |
| //~^ ERROR mismatched types [E0308] |
| Err(_) => {} |
| //~^ ERROR mismatched types [E0308] |
| } |
| } |
| |
| // Issue #126903 |
| async fn do_async() {} |
| fn dont_suggest_awaiting_closure_patterns() { |
| Some(do_async()).map(|()| {}); |
| //~^ ERROR mismatched types [E0308] |
| } |
| |
| fn main() {} |