From 392b2eff4b29cb590f1001dba12e5eed790b9841 Mon Sep 17 00:00:00 2001 From: Caio Date: Wed, 8 Dec 2021 20:02:28 -0300 Subject: [PATCH] Fix `blocks_in_if_conditions` false positive --- clippy_lints/src/blocks_in_if_conditions.rs | 8 +++++--- 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 47e5b0d583da..ff7b9fb2254e 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 2856943b9be8..169589f6d4e7 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;