// Test bindings-after-at with or-patterns //@ run-pass #[derive(Debug, PartialEq)] enum MatchArm { Arm(usize), Wild, } #[derive(Debug, Clone, Copy, PartialEq)] enum Test { Foo, Bar, Baz, Qux, } fn test(foo: Option) -> MatchArm { match foo { bar @ Some(Test::Foo | Test::Bar) => { assert!(bar == Some(Test::Foo) || bar == Some(Test::Bar)); MatchArm::Arm(0) }, Some(_) => MatchArm::Arm(1), _ => MatchArm::Wild, } } fn main() { assert_eq!(test(Some(Test::Foo)), MatchArm::Arm(0)); assert_eq!(test(Some(Test::Bar)), MatchArm::Arm(0)); assert_eq!(test(Some(Test::Baz)), MatchArm::Arm(1)); assert_eq!(test(Some(Test::Qux)), MatchArm::Arm(1)); assert_eq!(test(None), MatchArm::Wild); }