diff options
| author | Shotaro Yamada <sinkuu@sinkuu.xyz> | 2018-12-11 23:21:25 +0900 |
|---|---|---|
| committer | Shotaro Yamada <yamada@ccs.ee.tut.ac.jp> | 2018-12-12 17:41:51 +0900 |
| commit | 28635ff04be246a0e2d5bcec25b229f17b4f5974 (patch) | |
| tree | e806b18d95bba0c4c96ca7195f3eda99a3f0e5b4 | |
| parent | 05d07155b72d39d447bff1f5c1e8fb13a1eecd31 (diff) | |
| download | rust-28635ff04be246a0e2d5bcec25b229f17b4f5974.tar.gz rust-28635ff04be246a0e2d5bcec25b229f17b4f5974.zip | |
question_mark: Lint only early returns
| -rw-r--r-- | clippy_lints/src/question_mark.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clippy_lints/src/question_mark.rs b/clippy_lints/src/question_mark.rs index 21f22f151dd..61178ccdd56 100644 --- a/clippy_lints/src/question_mark.rs +++ b/clippy_lints/src/question_mark.rs @@ -133,9 +133,13 @@ impl Pass { } } - // Check if the block has an implicit return expression - if let Some(ref ret_expr) = block.expr { - return Some(ret_expr.clone()); + // Check for `return` without a semicolon. + if_chain! { + if block.stmts.len() == 0; + if let Some(ExprKind::Ret(Some(ret_expr))) = block.expr.as_ref().map(|e| &e.node); + then { + return Some(ret_expr.clone()); + } } None |
