diff options
| author | Caio <c410.f3r@gmail.com> | 2021-12-08 20:02:28 -0300 |
|---|---|---|
| committer | Caio <c410.f3r@gmail.com> | 2021-12-08 20:02:28 -0300 |
| commit | 392b2eff4b29cb590f1001dba12e5eed790b9841 (patch) | |
| tree | d42b1072311432eb1c02398ed883c53a8634b47d | |
| parent | 07f4f7c2dd07fce07b0d6d3c95eb01ed80b47638 (diff) | |
| download | rust-392b2eff4b29cb590f1001dba12e5eed790b9841.tar.gz rust-392b2eff4b29cb590f1001dba12e5eed790b9841.zip | |
Fix `blocks_in_if_conditions` false positive
| -rw-r--r-- | clippy_lints/src/blocks_in_if_conditions.rs | 8 | ||||
| -rw-r--r-- | tests/ui/blocks_in_if_conditions_closure.rs | 8 |
2 files changed, 13 insertions, 3 deletions
diff --git a/clippy_lints/src/blocks_in_if_conditions.rs b/clippy_lints/src/blocks_in_if_conditions.rs index 47e5b0d583d..ff7b9fb2254 100644 --- a/clippy_lints/src/blocks_in_if_conditions.rs +++ b/clippy_lints/src/blocks_in_if_conditions.rs @@ -72,9 +72,11 @@ impl<'a, 'tcx> Visitor<'tcx> for ExVisitor<'a, 'tcx> { let body = self.cx.tcx.hir().body(eid); let ex = &body.value; - if matches!(ex.kind, ExprKind::Block(_, _)) && !body.value.span.from_expansion() { - self.found_block = Some(ex); - return; + if let ExprKind::Block(block, _) = ex.kind { + if !body.value.span.from_expansion() && !block.stmts.is_empty() { + self.found_block = Some(ex); + return; + } } } walk_expr(self, expr); diff --git a/tests/ui/blocks_in_if_conditions_closure.rs b/tests/ui/blocks_in_if_conditions_closure.rs index 2856943b9be..169589f6d4e 100644 --- a/tests/ui/blocks_in_if_conditions_closure.rs +++ b/tests/ui/blocks_in_if_conditions_closure.rs @@ -44,6 +44,14 @@ fn macro_in_closure() { } } +fn closure(_: impl FnMut()) -> bool { + true +} + +fn function_with_empty_closure() { + if closure(|| {}) {} +} + #[rustfmt::skip] fn main() { let mut range = 0..10; |
