Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Nadrieril committed Mar 31, 2024
1 parent 8cf2c0d commit db9b4ea
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
34 changes: 34 additions & 0 deletions tests/ui/pattern/usefulness/unions.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 34 additions & 0 deletions tests/ui/pattern/usefulness/unions.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit db9b4ea

Please sign in to comment.