]> git.lizzy.rs Git - rust.git/blob - src/test/ui/match/issue-72680.rs
Rollup merge of #92242 - compiler-errors:layout-modulo-regions, r=matthewjasper
[rust.git] / src / test / ui / match / issue-72680.rs
1 // run-pass
2
3 fn main() {
4     assert!(f("", 0));
5     assert!(f("a", 1));
6     assert!(f("b", 1));
7
8     assert!(!f("", 1));
9     assert!(!f("a", 0));
10     assert!(!f("b", 0));
11
12     assert!(!f("asdf", 32));
13
14     ////
15
16     assert!(!g(true, true, true));
17     assert!(!g(false, true, true));
18     assert!(!g(true, false, true));
19     assert!(!g(false, false, true));
20     assert!(!g(true, true, false));
21
22     assert!(g(false, true, false));
23     assert!(g(true, false, false));
24     assert!(g(false, false, false));
25
26     ////
27
28     assert!(!h(true, true, true));
29     assert!(!h(false, true, true));
30     assert!(!h(true, false, true));
31     assert!(!h(false, false, true));
32     assert!(!h(true, true, false));
33
34     assert!(h(false, true, false));
35     assert!(h(true, false, false));
36     assert!(h(false, false, false));
37 }
38
39 fn f(s: &str, num: usize) -> bool {
40     match (s, num) {
41         ("", 0) | ("a" | "b", 1) => true,
42
43         _ => false,
44     }
45 }
46
47 fn g(x: bool, y: bool, z: bool) -> bool {
48     match (x, y, x, z) {
49         (true | false, false, true, false) => true,
50         (false, true | false, true | false, false) => true,
51         (true | false, true | false, true | false, true) => false,
52         (true, true | false, true | false, false) => false,
53     }
54 }
55
56 fn h(x: bool, y: bool, z: bool) -> bool {
57     match (x, (y, (x, (z,)))) {
58         (true | false, (false, (true, (false,)))) => true,
59         (false, (true | false, (true | false, (false,)))) => true,
60         (true | false, (true | false, (true | false, (true,)))) => false,
61         (true, (true | false, (true | false, (false,)))) => false,
62     }
63 }