]> git.lizzy.rs Git - rust.git/blob - src/test/ui/binding/empty-types-in-patterns.rs
slice_patterns: remove gates in tests
[rust.git] / src / test / ui / binding / empty-types-in-patterns.rs
1 // run-pass
2
3 #![feature(never_type, never_type_fallback)]
4 #![feature(exhaustive_patterns)]
5
6 #![allow(unreachable_patterns)]
7 #![allow(unreachable_code)]
8 #![allow(unused_variables)]
9
10 #[allow(dead_code)]
11 fn foo(z: !) {
12     let x: Result<!, !> = Ok(z);
13
14     let Ok(_y) = x;
15     let Err(_y) = x;
16
17     let x = [z; 1];
18
19     match x {};
20     match x {
21         [q] => q,
22     };
23 }
24
25 fn bar(nevers: &[!]) {
26     match nevers {
27         &[]  => (),
28     };
29
30     match nevers {
31         &[]  => (),
32         &[_]  => (),
33         &[_, _, _, ..]  => (),
34     };
35 }
36
37 fn main() {
38     let x: Result<u32, !> = Ok(123);
39     let Ok(y) = x;
40
41     assert_eq!(123, y);
42
43     match x {
44         Ok(y) => y,
45     };
46
47     match x {
48         Ok(y) => y,
49         Err(e) => match e {},
50     };
51
52     let x: Result<u32, &!> = Ok(123);
53     match x {
54         Ok(y) => y,
55         Err(_) => unimplemented!(),
56     };
57
58     bar(&[]);
59 }