1 #![warn(clippy::unnecessary_wraps)]
2 #![allow(clippy::no_effect)]
3 #![allow(clippy::needless_return)]
4 #![allow(clippy::if_same_then_else)]
5 #![allow(dead_code)]
6
7 // should be linted
func1(a: bool, b: bool) -> Option<i32>8 fn func1(a: bool, b: bool) -> Option<i32> {
9 if a && b {
10 return Some(42);
11 }
12 if a {
13 Some(-1);
14 Some(2)
15 } else {
16 return Some(1337);
17 }
18 }
19
20 // should be linted
func2(a: bool, b: bool) -> Option<i32>21 fn func2(a: bool, b: bool) -> Option<i32> {
22 if a && b {
23 return Some(10);
24 }
25 if a { Some(20) } else { Some(30) }
26 }
27
28 // public fns should not be linted
func3(a: bool) -> Option<i32>29 pub fn func3(a: bool) -> Option<i32> {
30 if a { Some(1) } else { Some(1) }
31 }
32
33 // should not be linted
func4(a: bool) -> Option<i32>34 fn func4(a: bool) -> Option<i32> {
35 if a { Some(1) } else { None }
36 }
37
38 // should be linted
func5() -> Option<i32>39 fn func5() -> Option<i32> {
40 Some(1)
41 }
42
43 // should not be linted
func6() -> Option<i32>44 fn func6() -> Option<i32> {
45 None
46 }
47
48 // should be linted
func7() -> Result<i32, ()>49 fn func7() -> Result<i32, ()> {
50 Ok(1)
51 }
52
53 // should not be linted
func8(a: bool) -> Result<i32, ()>54 fn func8(a: bool) -> Result<i32, ()> {
55 if a { Ok(1) } else { Err(()) }
56 }
57
58 // should not be linted
func9(a: bool) -> Result<i32, ()>59 fn func9(a: bool) -> Result<i32, ()> {
60 Err(())
61 }
62
63 // should not be linted
func10() -> Option<()>64 fn func10() -> Option<()> {
65 unimplemented!()
66 }
67
68 pub struct A;
69
70 impl A {
71 // should not be linted
func11() -> Option<i32>72 pub fn func11() -> Option<i32> {
73 Some(1)
74 }
75
76 // should be linted
func12() -> Option<i32>77 fn func12() -> Option<i32> {
78 Some(1)
79 }
80 }
81
82 trait B {
83 // trait impls are not linted
func13() -> Option<i32>84 fn func13() -> Option<i32> {
85 Some(1)
86 }
87 }
88
89 impl B for A {
90 // trait impls are not linted
func13() -> Option<i32>91 fn func13() -> Option<i32> {
92 Some(0)
93 }
94 }
95
issue_6384(s: &str) -> Option<&str>96 fn issue_6384(s: &str) -> Option<&str> {
97 Some(match s {
98 "a" => "A",
99 _ => return None,
100 })
101 }
102
103 // should be linted
issue_6640_1(a: bool, b: bool) -> Option<()>104 fn issue_6640_1(a: bool, b: bool) -> Option<()> {
105 if a && b {
106 return Some(());
107 }
108 if a {
109 Some(());
110 Some(())
111 } else {
112 return Some(());
113 }
114 }
115
116 // should be linted
issue_6640_2(a: bool, b: bool) -> Result<(), i32>117 fn issue_6640_2(a: bool, b: bool) -> Result<(), i32> {
118 if a && b {
119 return Ok(());
120 }
121 if a {
122 Ok(())
123 } else {
124 return Ok(());
125 }
126 }
127
128 // should not be linted
issue_6640_3() -> Option<()>129 fn issue_6640_3() -> Option<()> {
130 if true { Some(()) } else { None }
131 }
132
133 // should not be linted
issue_6640_4() -> Result<(), ()>134 fn issue_6640_4() -> Result<(), ()> {
135 if true { Ok(()) } else { Err(()) }
136 }
137
main()138 fn main() {
139 // method calls are not linted
140 func1(true, true);
141 func2(true, true);
142 issue_6640_1(true, true);
143 issue_6640_2(true, true);
144 }
145