Add missing const edge case
This commit is contained in:
parent
7b0e554ee2
commit
8fcfd6e136
3 changed files with 67 additions and 0 deletions
33
src/test/ui/closures/2229_closure_analysis/issue-88331.rs
Normal file
33
src/test/ui/closures/2229_closure_analysis/issue-88331.rs
Normal file
|
|
@ -0,0 +1,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() {}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
error[E0004]: non-exhaustive patterns: `Opcode(0_u8)` and `Opcode(2_u8..=u8::MAX)` not covered
|
||||
--> $DIR/issue-88331.rs:11:20
|
||||
|
|
||||
LL | pub struct Opcode(pub u8);
|
||||
| -------------------------- `Opcode` defined here
|
||||
...
|
||||
LL | move |i| match msg_type {
|
||||
| ^^^^^^^^ patterns `Opcode(0_u8)` and `Opcode(2_u8..=u8::MAX)` not covered
|
||||
|
|
||||
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
|
||||
= note: the matched value is of type `Opcode`
|
||||
|
||||
error[E0004]: non-exhaustive patterns: `Opcode2(Opcode(0_u8))` and `Opcode2(Opcode(2_u8..=u8::MAX))` not covered
|
||||
--> $DIR/issue-88331.rs:27:20
|
||||
|
|
||||
LL | pub struct Opcode2(Opcode);
|
||||
| --------------------------- `Opcode2` defined here
|
||||
...
|
||||
LL | move |i| match msg_type {
|
||||
| ^^^^^^^^ patterns `Opcode2(Opcode(0_u8))` and `Opcode2(Opcode(2_u8..=u8::MAX))` not covered
|
||||
|
|
||||
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
|
||||
= note: the matched value is of type `Opcode2`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0004`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue