Add tests
This commit is contained in:
parent
8cf2c0dc67
commit
db9b4eac48
34
tests/ui/pattern/usefulness/unions.rs
Normal file
34
tests/ui/pattern/usefulness/unions.rs
Normal file
@ -0,0 +1,34 @@
|
||||
fn main() {
|
||||
#[derive(Copy, Clone)]
|
||||
union U8AsBool {
|
||||
n: u8,
|
||||
b: bool,
|
||||
}
|
||||
|
||||
let x = U8AsBool { n: 1 };
|
||||
unsafe {
|
||||
match x {
|
||||
// exhaustive
|
||||
U8AsBool { n: 2 } => {}
|
||||
U8AsBool { b: true } => {}
|
||||
U8AsBool { b: false } => {}
|
||||
}
|
||||
match x {
|
||||
// exhaustive
|
||||
U8AsBool { b: true } => {}
|
||||
U8AsBool { n: 0 } => {}
|
||||
U8AsBool { n: 1.. } => {}
|
||||
}
|
||||
match x {
|
||||
//~^ ERROR non-exhaustive patterns: `U8AsBool { n: 0_u8, b: false }` not covered
|
||||
U8AsBool { b: true } => {}
|
||||
U8AsBool { n: 1.. } => {}
|
||||
}
|
||||
match (x, true) {
|
||||
//~^ ERROR non-exhaustive patterns: `(U8AsBool { n: 0_u8, b: false }, false)` and `(U8AsBool { n: 0_u8, b: true }, false)` not covered
|
||||
(U8AsBool { b: true }, true) => {}
|
||||
(U8AsBool { b: false }, true) => {}
|
||||
(U8AsBool { n: 1.. }, true) => {}
|
||||
}
|
||||
}
|
||||
}
|
34
tests/ui/pattern/usefulness/unions.stderr
Normal file
34
tests/ui/pattern/usefulness/unions.stderr
Normal file
@ -0,0 +1,34 @@
|
||||
error[E0004]: non-exhaustive patterns: `U8AsBool { n: 0_u8, b: false }` not covered
|
||||
--> $DIR/unions.rs:22:15
|
||||
|
|
||||
LL | match x {
|
||||
| ^ pattern `U8AsBool { n: 0_u8, b: false }` not covered
|
||||
|
|
||||
note: `U8AsBool` defined here
|
||||
--> $DIR/unions.rs:3:11
|
||||
|
|
||||
LL | union U8AsBool {
|
||||
| ^^^^^^^^
|
||||
= note: the matched value is of type `U8AsBool`
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ U8AsBool { n: 1.. } => {},
|
||||
LL + U8AsBool { n: 0_u8, b: false } => todo!()
|
||||
|
|
||||
|
||||
error[E0004]: non-exhaustive patterns: `(U8AsBool { n: 0_u8, b: false }, false)` and `(U8AsBool { n: 0_u8, b: true }, false)` not covered
|
||||
--> $DIR/unions.rs:27:15
|
||||
|
|
||||
LL | match (x, true) {
|
||||
| ^^^^^^^^^ patterns `(U8AsBool { n: 0_u8, b: false }, false)` and `(U8AsBool { n: 0_u8, b: true }, false)` not covered
|
||||
|
|
||||
= note: the matched value is of type `(U8AsBool, bool)`
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern, a match arm with multiple or-patterns as shown, or multiple match arms
|
||||
|
|
||||
LL ~ (U8AsBool { n: 1.. }, true) => {},
|
||||
LL + (U8AsBool { n: 0_u8, b: false }, false) | (U8AsBool { n: 0_u8, b: true }, false) => todo!()
|
||||
|
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0004`.
|
Loading…
Reference in New Issue
Block a user