// Regression test for #87051, where a double semicolon was erroneously // suggested after a `?` operator. fn main() -> Result<(), ()> { a(|| { 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) -> Result<(), ()> where F: FnMut() { Ok(()) } fn b() -> i32 { 42 }