File tree Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -146,9 +146,28 @@ impl Pass {
146
146
}
147
147
}
148
148
149
- // Check if the block has an implicit return expression
150
- if let Some ( ref ret_expr) = block. expr {
151
- return Some ( ret_expr. clone ( ) ) ;
149
+ // Check for `return` without a semicolon.
150
+ //
151
+ // ```rust
152
+ // let _ = if self.opt.is_none() {
153
+ // /* no stmts here */
154
+ // return None
155
+ // } else {
156
+ // self.opt
157
+ // };
158
+ // ```
159
+ //
160
+ // This can be rewritten as:
161
+ //
162
+ // ```rust
163
+ // let _ = self.opt?;
164
+ // ```
165
+ if_chain ! {
166
+ if block. stmts. len( ) == 0 ;
167
+ if let Some ( ExprKind :: Ret ( Some ( ret_expr) ) ) = block. expr. as_ref( ) . map( |e| & e. node) ;
168
+ then {
169
+ return Some ( ret_expr. clone( ) ) ;
170
+ }
152
171
}
153
172
154
173
None
Original file line number Diff line number Diff line change @@ -57,6 +57,12 @@ impl SomeStruct {
57
57
self . opt
58
58
} ;
59
59
60
+ let _ = if self . opt . is_none ( ) {
61
+ None
62
+ } else {
63
+ self . opt
64
+ } ;
65
+
60
66
let _ = if self . opt . is_none ( ) {
61
67
return None ;
62
68
} else {
You can’t perform that action at this time.
0 commit comments