rust/tests/ui/suggestions/match-prev-arm-needing-semi.rs

57 lines
1.9 KiB
Rust

//@ 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() {}