// run-pass // Test that codegen works correctly when there are multiple refutable // patterns in match expression. enum Foo { FooUint(usize), FooNullary, } fn main() { let r = match (Foo::FooNullary, 'a') { (Foo::FooUint(..), 'a'..='z') => 1, (Foo::FooNullary, 'x') => 2, _ => 0 }; assert_eq!(r, 0); let r = match (Foo::FooUint(0), 'a') { (Foo::FooUint(1), 'a'..='z') => 1, (Foo::FooUint(..), 'x') => 2, (Foo::FooNullary, 'a') => 3, _ => 0 }; assert_eq!(r, 0); let r = match ('a', Foo::FooUint(0)) { ('a'..='z', Foo::FooUint(1)) => 1, ('x', Foo::FooUint(..)) => 2, ('a', Foo::FooNullary) => 3, _ => 0 }; assert_eq!(r, 0); let r = match ('a', 'a') { ('a'..='z', 'b') => 1, ('x', 'a'..='z') => 2, _ => 0 }; assert_eq!(r, 0); let r = match ('a', 'a') { ('a'..='z', 'b') => 1, ('x', 'a'..='z') => 2, ('a', 'a') => 3, _ => 0 }; assert_eq!(r, 3); }