]> git.lizzy.rs Git - rust.git/blob - tests/ui/checked_unwrap.rs
Merge pull request #2815 from darArch/master
[rust.git] / tests / ui / checked_unwrap.rs
1 #![deny(unnecessary_unwrap)]
2
3 fn main() {
4     let x = Some(());
5     if x.is_some() {
6         x.unwrap();
7     }
8     if x.is_none() {
9         // nothing to do here
10     } else {
11         x.unwrap();
12     }
13     let mut x: Result<(), ()> = Ok(());
14     if x.is_ok() {
15         x.unwrap();
16     } else {
17         x.unwrap_err();
18     }
19     if x.is_err() {
20         x.unwrap_err();
21     } else {
22         x.unwrap();
23     }
24     if x.is_ok() {
25         x = Err(());
26         x.unwrap();
27     } else {
28         x = Ok(());
29         x.unwrap_err();
30     }
31 }
32
33 fn test_complex_conditions() {
34     let x: Result<(), ()> = Ok(());
35     let y: Result<(), ()> = Ok(());
36     if x.is_ok() && y.is_err() {
37         x.unwrap();
38         y.unwrap_err();
39     } else {
40         // not clear whether unwrappable:
41         x.unwrap_err();
42         y.unwrap();
43     }
44
45     if x.is_ok() || y.is_ok() {
46         // not clear whether unwrappable:
47         x.unwrap();
48         y.unwrap();
49     } else {
50         x.unwrap_err();
51         y.unwrap_err();
52     }
53     let z: Result<(), ()> = Ok(());
54     if x.is_ok() && !(y.is_ok() || z.is_err()) {
55         x.unwrap();
56         y.unwrap_err();
57         z.unwrap();
58     }
59     if x.is_ok() || !(y.is_ok() && z.is_err()) {
60         // not clear what's unwrappable
61     } else {
62         x.unwrap_err();
63         y.unwrap();
64         z.unwrap_err();
65     }
66 }
67
68 fn test_nested() {
69     fn nested() {
70         let x = Some(());
71         if x.is_some() {
72             x.unwrap();
73         }
74     }
75 }