38 lines
905 B
Rust
38 lines
905 B
Rust
#![crate_type = "lib"]
|
|
#![deny(unreachable_patterns)]
|
|
|
|
mod test_struct {
|
|
// Test the exact copy of the minimal example
|
|
// posted in the issue.
|
|
pub struct Punned {
|
|
foo: [u8; 1],
|
|
bar: [u8; 1],
|
|
}
|
|
|
|
pub fn test(punned: Punned) {
|
|
match punned {
|
|
Punned { foo: [_], .. } => println!("foo"),
|
|
Punned { bar: [_], .. } => println!("bar"),
|
|
//~^ ERROR unreachable pattern [unreachable_patterns]
|
|
}
|
|
}
|
|
}
|
|
|
|
mod test_union {
|
|
// Test the same thing using a union.
|
|
pub union Punned {
|
|
foo: [u8; 1],
|
|
bar: [u8; 1],
|
|
}
|
|
|
|
pub fn test(punned: Punned) {
|
|
unsafe {
|
|
match punned {
|
|
Punned { foo: [_] } => println!("foo"),
|
|
Punned { bar: [_] } => println!("bar"),
|
|
//~^ ERROR unreachable pattern [unreachable_patterns]
|
|
}
|
|
}
|
|
}
|
|
}
|