2021-07-11 15:04:11 +00:00
|
|
|
// Regression test for #87051, where a double semicolon was erroneously
|
|
|
|
// suggested after a `?` operator.
|
|
|
|
|
|
|
|
fn main() -> Result<(), ()> {
|
|
|
|
a(|| {
|
2024-04-11 17:40:16 +00:00
|
|
|
//~^ HELP: try adding a return type
|
2021-07-11 15:04:11 +00:00
|
|
|
b()
|
|
|
|
//~^ ERROR: mismatched types [E0308]
|
|
|
|
//~| NOTE: expected `()`, found `i32`
|
|
|
|
//~| HELP: consider using a semicolon here
|
|
|
|
})?;
|
|
|
|
|
|
|
|
// Here, we do want to suggest a semicolon:
|
|
|
|
let x = Ok(42);
|
|
|
|
if true {
|
|
|
|
//~^ NOTE: expected this to be `()`
|
|
|
|
x?
|
|
|
|
//~^ ERROR: mismatched types [E0308]
|
|
|
|
//~| NOTE: expected `()`, found integer
|
|
|
|
//~| HELP: consider using a semicolon here
|
|
|
|
}
|
|
|
|
//~^ HELP: consider using a semicolon here
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
|
|
|
fn a<F>(f: F) -> Result<(), ()> where F: FnMut() { Ok(()) }
|
|
|
|
fn b() -> i32 { 42 }
|