rust/src/test/ui/or-patterns/box-patterns.rs
Matthew Kuo 5456114858 test(pattern): add tests for combinations of pattern features
Reference issue #67311

Tests combinations of the following pattern features:
- bindings_after_at
- or_patterns
- slice_patterns
- box_patterns
2020-03-04 01:17:41 -06:00

37 lines
818 B
Rust

// Test or-patterns with box-patterns
// run-pass
#![feature(or_patterns)]
#![feature(box_patterns)]
#[derive(Debug, PartialEq)]
enum MatchArm {
Arm(usize),
Wild,
}
#[derive(Debug)]
enum Test {
Foo,
Bar,
Baz,
Qux,
}
fn test(x: Option<Box<Test>>) -> MatchArm {
match x {
Some(box Test::Foo | box Test::Bar) => MatchArm::Arm(0),
Some(box Test::Baz) => MatchArm::Arm(1),
Some(_) => MatchArm::Arm(2),
_ => MatchArm::Wild,
}
}
fn main() {
assert_eq!(test(Some(Box::new(Test::Foo))), MatchArm::Arm(0));
assert_eq!(test(Some(Box::new(Test::Bar))), MatchArm::Arm(0));
assert_eq!(test(Some(Box::new(Test::Baz))), MatchArm::Arm(1));
assert_eq!(test(Some(Box::new(Test::Qux))), MatchArm::Arm(2));
assert_eq!(test(None), MatchArm::Wild);
}