diff options
| author | Philipp Hansch <dev@phansch.net> | 2018-12-06 14:13:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-06 14:13:20 +0100 |
| commit | c4ef06a9b6ab1eecac106bf2d72c95209687d57a (patch) | |
| tree | 1f9542850f16ac096cd7056945e1f12c3fd6be0f | |
| parent | 0fb30218d522d7661d7e4ea46bf8864a99143982 (diff) | |
| parent | a4ec7be06fc3406bca536340a4073a9159d36e45 (diff) | |
| download | rust-c4ef06a9b6ab1eecac106bf2d72c95209687d57a.tar.gz rust-c4ef06a9b6ab1eecac106bf2d72c95209687d57a.zip | |
Merge pull request #3497 from daxpedda/master
Fix bug in `implicit_return`.
| -rw-r--r-- | clippy_lints/src/implicit_return.rs | 9 | ||||
| -rw-r--r-- | tests/ui/implicit_return.stderr | 8 |
2 files changed, 9 insertions, 8 deletions
diff --git a/clippy_lints/src/implicit_return.rs b/clippy_lints/src/implicit_return.rs index 664f182c533..07a849469fd 100644 --- a/clippy_lints/src/implicit_return.rs +++ b/clippy_lints/src/implicit_return.rs @@ -47,7 +47,8 @@ pub struct Pass; impl Pass { fn expr_match(cx: &LateContext<'_, '_>, expr: &rustc::hir::Expr) { match &expr.node { - ExprKind::Block(block, ..) => { + // loops could be using `break` instead of `return` + ExprKind::Block(block, ..) | ExprKind::Loop(block, ..) => { if let Some(expr) = &block.expr { Self::expr_match(cx, expr); } @@ -85,12 +86,6 @@ impl Pass { Self::expr_match(cx, &arm.body); } }, - // loops could be using `break` instead of `return` - ExprKind::Loop(block, ..) => { - if let Some(expr) = &block.expr { - Self::expr_match(cx, expr); - } - }, // skip if it already has a return statement ExprKind::Ret(..) => (), // everything else is missing `return` diff --git a/tests/ui/implicit_return.stderr b/tests/ui/implicit_return.stderr index bba8d942e27..6f4fe12757a 100644 --- a/tests/ui/implicit_return.stderr +++ b/tests/ui/implicit_return.stderr @@ -31,6 +31,12 @@ error: missing return statement | ^^^^ help: add `return` as shown: `return true` error: missing return statement + --> $DIR/implicit_return.rs:46:9 + | +46 | break true; + | ^^^^^^^^^^ help: change `break` to `return` as shown: `return true` + +error: missing return statement --> $DIR/implicit_return.rs:52:9 | 52 | true @@ -42,5 +48,5 @@ error: missing return statement 54 | let _ = || true; | ^^^^ help: add `return` as shown: `return true` -error: aborting due to 7 previous errors +error: aborting due to 8 previous errors |
