| //@ run-pass | 
 |  | 
 | #[derive(Debug)] | 
 | enum Other { | 
 |     One, | 
 |     Two, | 
 |     Three, | 
 | } | 
 |  | 
 | #[derive(Debug)] | 
 | enum Test { | 
 |     Foo { first: usize, second: usize }, | 
 |     Bar { other: Option<Other> }, | 
 |     Baz, | 
 | } | 
 |  | 
 | fn test(x: Option<Test>) -> bool { | 
 |     match x { | 
 |         Some( | 
 |             Test::Foo { first: 1024 | 2048, second: 2048 | 4096 } | 
 |             | Test::Bar { other: Some(Other::One | Other::Two) }, | 
 |         ) => true, | 
 |         // wild case | 
 |         Some(_) => false, | 
 |         // empty case | 
 |         None => false, | 
 |     } | 
 | } | 
 |  | 
 | fn main() { | 
 |     assert!(test(Some(Test::Foo { first: 1024, second: 4096 }))); | 
 |     assert!(!test(Some(Test::Foo { first: 2048, second: 8192 }))); | 
 |     assert!(!test(Some(Test::Foo { first: 42, second: 2048 }))); | 
 |     assert!(test(Some(Test::Bar { other: Some(Other::One) }))); | 
 |     assert!(test(Some(Test::Bar { other: Some(Other::Two) }))); | 
 |     assert!(!test(Some(Test::Bar { other: Some(Other::Three) }))); | 
 |     assert!(!test(Some(Test::Bar { other: None }))); | 
 |     assert!(!test(Some(Test::Baz))); | 
 |     assert!(!test(None)); | 
 | } |