summaryrefslogtreecommitdiffstats
path: root/src/test/ui/suggestions/try-operator-dont-suggest-semicolon.rs
blob: f882a159f98340f2c6e9159a77d299d36ba7132d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 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: F) -> Result<(), ()> where F: FnMut() { Ok(()) }
fn b() -> i32 { 42 }