]> git.lizzy.rs Git - rust.git/blob - tests/ui/assertions_on_result_states.fixed
Merge commit '3c7e7dbc1583a0b06df5bd7623dd354a4debd23d' into clippyup
[rust.git] / tests / ui / assertions_on_result_states.fixed
1 // run-rustfix
2 #![warn(clippy::assertions_on_result_states)]
3
4 use std::result::Result;
5
6 struct Foo;
7
8 #[derive(Debug)]
9 struct DebugFoo;
10
11 #[derive(Copy, Clone, Debug)]
12 struct CopyFoo;
13
14 macro_rules! get_ok_macro {
15     () => {
16         Ok::<_, DebugFoo>(Foo)
17     };
18 }
19
20 fn main() {
21     // test ok
22     let r: Result<Foo, DebugFoo> = Ok(Foo);
23     debug_assert!(r.is_ok());
24     r.unwrap();
25
26     // test ok with non-debug error type
27     let r: Result<Foo, Foo> = Ok(Foo);
28     assert!(r.is_ok());
29
30     // test temporary ok
31     fn get_ok() -> Result<Foo, DebugFoo> {
32         Ok(Foo)
33     }
34     get_ok().unwrap();
35
36     // test macro ok
37     get_ok_macro!().unwrap();
38
39     // test ok that shouldn't be moved
40     let r: Result<CopyFoo, DebugFoo> = Ok(CopyFoo);
41     fn test_ref_unmoveable_ok(r: &Result<CopyFoo, DebugFoo>) {
42         assert!(r.is_ok());
43     }
44     test_ref_unmoveable_ok(&r);
45     assert!(r.is_ok());
46     r.unwrap();
47
48     // test ok that is copied
49     let r: Result<CopyFoo, CopyFoo> = Ok(CopyFoo);
50     r.unwrap();
51     r.unwrap();
52
53     // test reference to ok
54     let r: Result<CopyFoo, CopyFoo> = Ok(CopyFoo);
55     fn test_ref_copy_ok(r: &Result<CopyFoo, CopyFoo>) {
56         r.unwrap();
57     }
58     test_ref_copy_ok(&r);
59     r.unwrap();
60
61     // test err
62     let r: Result<DebugFoo, Foo> = Err(Foo);
63     debug_assert!(r.is_err());
64     r.unwrap_err();
65
66     // test err with non-debug value type
67     let r: Result<Foo, Foo> = Err(Foo);
68     assert!(r.is_err());
69 }