//@ edition:2018 fn dummy() -> i32 { 42 } fn extra_semicolon() { let _ = match true { //~ NOTE `match` arms have incompatible types true => { dummy(); //~ NOTE this is found to be //~^ HELP consider removing this semicolon } false => dummy(), //~ ERROR `match` arms have incompatible types //~^ NOTE expected `()`, found `i32` }; } async fn async_dummy() {} async fn async_dummy2() {} async fn async_extra_semicolon_same() { let _ = match true { //~ NOTE `match` arms have incompatible types true => { async_dummy(); //~ NOTE this is found to be //~^ HELP consider removing this semicolon } false => async_dummy(), //~ ERROR `match` arms have incompatible types //~^ NOTE expected `()`, found future //~| NOTE calling an async function returns a future //~| HELP consider `await`ing on the `Future` }; } async fn async_extra_semicolon_different() { let _ = match true { //~ NOTE `match` arms have incompatible types true => { async_dummy(); //~ NOTE this is found to be //~^ HELP consider removing this semicolon } false => async_dummy2(), //~ ERROR `match` arms have incompatible types //~^ NOTE expected `()`, found future //~| NOTE calling an async function returns a future //~| HELP consider `await`ing on the `Future` }; } async fn async_different_futures() { let _ = match true { //~ NOTE `match` arms have incompatible types true => async_dummy(), //~ NOTE this is found to be //~| HELP consider `await`ing on both `Future`s false => async_dummy2(), //~ ERROR `match` arms have incompatible types //~^ NOTE expected future, found a different future //~| NOTE distinct uses of `impl Trait` result in different opaque types }; } fn main() {}