summaryrefslogtreecommitdiffstats
path: root/tests/ui/match/issue-56685.rs
blob: f320c99ed15d10c4507dbfd1f47b73a607aef192 (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#![allow(dead_code)]
#![deny(unused_variables)]

// This test aims to check that unused variable suggestions update bindings in all
// match arms.

fn main() {
    enum E {
        A(i32,),
        B(i32,),
    }

    match E::A(1) {
        E::A(x) | E::B(x) => {}
        //~^ ERROR unused variable: `x`
    }

    enum F {
        A(i32, i32,),
        B(i32, i32,),
        C(i32, i32,),
    }

    let _ = match F::A(1, 2) {
        F::A(x, y) | F::B(x, y) => { y },
        //~^ ERROR unused variable: `x`
        F::C(a, b) => { 3 }
        //~^ ERROR unused variable: `a`
        //~^^ ERROR unused variable: `b`
    };

    let _ = if let F::A(x, y) | F::B(x, y) = F::A(1, 2) {
    //~^ ERROR unused variable: `x`
        y
    } else {
        3
    };

    while let F::A(x, y) | F::B(x, y) = F::A(1, 2) {
    //~^ ERROR unused variable: `x`
        let _ = y;
        break;
    }
}