//@ edition:2018 fn dummy() -> i32 { 42 } fn extra_semicolon() { let _ = if true { //~^ NOTE `if` and `else` have incompatible types dummy(); //~ NOTE expected because of this //~^ HELP consider removing this semicolon } else { dummy() //~ ERROR `if` and `else` have incompatible types //~^ NOTE expected `()`, found `i32` }; } async fn async_dummy() {} async fn async_dummy2() {} async fn async_extra_semicolon_same() { let _ = if true { //~^ NOTE `if` and `else` have incompatible types async_dummy(); //~ NOTE expected because of this //~^ HELP consider removing this semicolon } else { async_dummy() //~ ERROR `if` and `else` 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 _ = if true { //~^ NOTE `if` and `else` have incompatible types async_dummy(); //~ NOTE expected because of this //~^ HELP consider removing this semicolon } else { async_dummy2() //~ ERROR `if` and `else` 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 _ = if true { //~^ NOTE `if` and `else` have incompatible types async_dummy() //~ NOTE expected because of this //~| HELP consider `await`ing on both `Future`s } else { async_dummy2() //~ ERROR `if` and `else` have incompatible types //~^ NOTE expected future, found a different future //~| NOTE distinct uses of `impl Trait` result in different opaque types }; } fn main() {}