]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/unnecessary_literal_unwrap.rs
New upstream version 1.73.0+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / unnecessary_literal_unwrap.rs
CommitLineData
fe692bf9
FG
1//@run-rustfix
2#![warn(clippy::unnecessary_literal_unwrap)]
3#![allow(unreachable_code)]
4#![allow(
5 clippy::unnecessary_lazy_evaluations,
6 clippy::diverging_sub_expression,
7 clippy::let_unit_value,
8 clippy::no_effect
9)]
10
11fn unwrap_option_some() {
12 let _val = Some(1).unwrap();
13 let _val = Some(1).expect("this never happens");
14
15 Some(1).unwrap();
16 Some(1).expect("this never happens");
17}
18
19#[rustfmt::skip] // force rustfmt not to remove braces in `|| { 234 }`
20fn unwrap_option_none() {
21 let _val = None::<()>.unwrap();
22 let _val = None::<()>.expect("this always happens");
23 let _val: String = None.unwrap_or_default();
24 let _val: u16 = None.unwrap_or(234);
25 let _val: u16 = None.unwrap_or_else(|| 234);
26 let _val: u16 = None.unwrap_or_else(|| { 234 });
27 let _val: u16 = None.unwrap_or_else(|| -> u16 { 234 });
28
29 None::<()>.unwrap();
30 None::<()>.expect("this always happens");
31 None::<String>.unwrap_or_default();
32 None::<u16>.unwrap_or(234);
33 None::<u16>.unwrap_or_else(|| 234);
34 None::<u16>.unwrap_or_else(|| { 234 });
35 None::<u16>.unwrap_or_else(|| -> u16 { 234 });
36}
37
38fn unwrap_result_ok() {
39 let _val = Ok::<_, ()>(1).unwrap();
40 let _val = Ok::<_, ()>(1).expect("this never happens");
41 let _val = Ok::<_, ()>(1).unwrap_err();
42 let _val = Ok::<_, ()>(1).expect_err("this always happens");
43
44 Ok::<_, ()>(1).unwrap();
45 Ok::<_, ()>(1).expect("this never happens");
46 Ok::<_, ()>(1).unwrap_err();
47 Ok::<_, ()>(1).expect_err("this always happens");
48}
49
50fn unwrap_result_err() {
51 let _val = Err::<(), _>(1).unwrap_err();
52 let _val = Err::<(), _>(1).expect_err("this never happens");
53 let _val = Err::<(), _>(1).unwrap();
54 let _val = Err::<(), _>(1).expect("this always happens");
55
56 Err::<(), _>(1).unwrap_err();
57 Err::<(), _>(1).expect_err("this never happens");
58 Err::<(), _>(1).unwrap();
59 Err::<(), _>(1).expect("this always happens");
60}
61
62fn unwrap_methods_option() {
63 let _val = Some(1).unwrap_or(2);
64 let _val = Some(1).unwrap_or_default();
65 let _val = Some(1).unwrap_or_else(|| 2);
66
67 Some(1).unwrap_or(2);
68 Some(1).unwrap_or_default();
69 Some(1).unwrap_or_else(|| 2);
70}
71
72fn unwrap_methods_result() {
73 let _val = Ok::<_, ()>(1).unwrap_or(2);
74 let _val = Ok::<_, ()>(1).unwrap_or_default();
75 let _val = Ok::<_, ()>(1).unwrap_or_else(|_| 2);
76
77 Ok::<_, ()>(1).unwrap_or(2);
78 Ok::<_, ()>(1).unwrap_or_default();
79 Ok::<_, ()>(1).unwrap_or_else(|_| 2);
80}
81
add651ee
FG
82fn unwrap_from_binding() {
83 macro_rules! from_macro {
84 () => {
85 Some("")
86 };
87 }
88 let val = from_macro!();
89 let _ = val.unwrap_or("");
90}
91
92fn unwrap_unchecked() {
93 let _ = unsafe { Some(1).unwrap_unchecked() };
94 let _ = unsafe { Some(1).unwrap_unchecked() + *(&1 as *const i32) }; // needs to keep the unsafe block
95 let _ = unsafe { Some(1).unwrap_unchecked() } + 1;
96 let _ = unsafe { Ok::<_, ()>(1).unwrap_unchecked() };
97 let _ = unsafe { Ok::<_, ()>(1).unwrap_unchecked() + *(&1 as *const i32) };
98 let _ = unsafe { Ok::<_, ()>(1).unwrap_unchecked() } + 1;
99 let _ = unsafe { Err::<(), i32>(123).unwrap_err_unchecked() };
100}
101
fe692bf9
FG
102fn main() {
103 unwrap_option_some();
104 unwrap_option_none();
105 unwrap_result_ok();
106 unwrap_result_err();
107 unwrap_methods_option();
108 unwrap_methods_result();
add651ee 109 unwrap_unchecked();
fe692bf9 110}