diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2024-01-19 01:06:08 +0100 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2024-01-19 01:06:08 +0100 |
| commit | c6079a6880ffa29a49edeb48520f220963b01c3e (patch) | |
| tree | dc8187f510255710e076274aa609c7ac8d79cc91 | |
| parent | 4b3a9c09f32b725c77acbbf411158cb03af7a36a (diff) | |
| download | rust-c6079a6880ffa29a49edeb48520f220963b01c3e.tar.gz rust-c6079a6880ffa29a49edeb48520f220963b01c3e.zip | |
blocks_in_conditions: do not warn if condition comes from macro
| -rw-r--r-- | clippy_lints/src/blocks_in_conditions.rs | 5 | ||||
| -rw-r--r-- | tests/ui/blocks_in_conditions.fixed | 14 | ||||
| -rw-r--r-- | tests/ui/blocks_in_conditions.rs | 14 |
3 files changed, 33 insertions, 0 deletions
diff --git a/clippy_lints/src/blocks_in_conditions.rs b/clippy_lints/src/blocks_in_conditions.rs index 1417e230aee..ff4dffd0607 100644 --- a/clippy_lints/src/blocks_in_conditions.rs +++ b/clippy_lints/src/blocks_in_conditions.rs @@ -67,6 +67,11 @@ impl<'tcx> LateLintPass<'tcx> for BlocksInConditions { ); if let ExprKind::Block(block, _) = &cond.kind { + if !block.span.eq_ctxt(expr.span) { + // If the block comes from a macro, or as an argument to a macro, + // do not lint. + return; + } if block.rules == BlockCheckMode::DefaultBlock { if block.stmts.is_empty() { if let Some(ex) = &block.expr { diff --git a/tests/ui/blocks_in_conditions.fixed b/tests/ui/blocks_in_conditions.fixed index 2ab441bbd0c..efef60567a9 100644 --- a/tests/ui/blocks_in_conditions.fixed +++ b/tests/ui/blocks_in_conditions.fixed @@ -85,4 +85,18 @@ fn block_in_match_expr(num: i32) -> i32 { } } +// issue #12162 +macro_rules! timed { + ($name:expr, $body:expr $(,)?) => {{ + let __scope = (); + $body + }}; +} + +fn issue_12162() { + if timed!("check this!", false) { + println!(); + } +} + fn main() {} diff --git a/tests/ui/blocks_in_conditions.rs b/tests/ui/blocks_in_conditions.rs index dd5ae4fb486..8bd8a939eb1 100644 --- a/tests/ui/blocks_in_conditions.rs +++ b/tests/ui/blocks_in_conditions.rs @@ -85,4 +85,18 @@ fn block_in_match_expr(num: i32) -> i32 { } } +// issue #12162 +macro_rules! timed { + ($name:expr, $body:expr $(,)?) => {{ + let __scope = (); + $body + }}; +} + +fn issue_12162() { + if timed!("check this!", false) { + println!(); + } +} + fn main() {} |
