summaryrefslogtreecommitdiffstats
path: root/tests/ui/closures/2229_closure_analysis/match/issue-88331.rs
blob: 0a6d71c68ae84f7c660ed0f29bb106d53dc9d384 (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
// edition:2021

#[derive(Copy, Clone, PartialEq, Eq)]
pub struct Opcode(pub u8);

impl Opcode {
    pub const OP1: Opcode = Opcode(0x1);
}

pub fn example1(msg_type: Opcode) -> impl FnMut(&[u8]) {
    move |i| match msg_type {
    //~^ ERROR: non-exhaustive patterns: `Opcode(0_u8)` and `Opcode(2_u8..=u8::MAX)` not covered
        Opcode::OP1 => unimplemented!(),
    }
}

#[derive(Copy, Clone, PartialEq, Eq)]
pub struct Opcode2(Opcode);

impl Opcode2 {
    pub const OP2: Opcode2 = Opcode2(Opcode(0x1));
}


pub fn example2(msg_type: Opcode2) -> impl FnMut(&[u8]) {

    move |i| match msg_type {
    //~^ ERROR: non-exhaustive patterns: `Opcode2(Opcode(0_u8))` and `Opcode2(Opcode(2_u8..=u8::MAX))` not covered
        Opcode2::OP2=> unimplemented!(),
    }
}

fn main() {}