diff options
| author | Ada Alakbarova <ada.alakbarova@proton.me> | 2025-09-13 11:11:48 +0200 |
|---|---|---|
| committer | Ada Alakbarova <ada.alakbarova@proton.me> | 2025-09-13 12:24:01 +0200 |
| commit | 6f3f1f3aa71c1d8dfdb86ff47255979bcfdb5cda (patch) | |
| tree | 5d4c4d4254676ab5f99b6cb21d5a5a823b214077 | |
| parent | 1d0582a0e2c248c909d9c3813f6605a3b39ffd5a (diff) | |
| download | rust-6f3f1f3aa71c1d8dfdb86ff47255979bcfdb5cda.tar.gz rust-6f3f1f3aa71c1d8dfdb86ff47255979bcfdb5cda.zip | |
fix(needless_return): FP with `cfg`d code after `return`
| -rw-r--r-- | clippy_lints/src/returns/needless_return.rs | 11 | ||||
| -rw-r--r-- | tests/ui/needless_return.fixed | 7 | ||||
| -rw-r--r-- | tests/ui/needless_return.rs | 7 |
3 files changed, 24 insertions, 1 deletions
diff --git a/clippy_lints/src/returns/needless_return.rs b/clippy_lints/src/returns/needless_return.rs index 0a1ba7b5bec..04739fc1b22 100644 --- a/clippy_lints/src/returns/needless_return.rs +++ b/clippy_lints/src/returns/needless_return.rs @@ -2,7 +2,7 @@ use clippy_utils::diagnostics::span_lint_hir_and_then; use clippy_utils::source::snippet_with_context; use clippy_utils::{ binary_expr_needs_parentheses, is_from_proc_macro, leaks_droppable_temporary_with_limited_lifetime, - span_find_starting_semi, sym, + span_contains_cfg, span_find_starting_semi, sym, }; use rustc_ast::MetaItemInner; use rustc_errors::Applicability; @@ -83,6 +83,15 @@ fn check_block_return<'tcx>(cx: &LateContext<'tcx>, expr_kind: &ExprKind<'tcx>, if let Some(block_expr) = block.expr { check_final_expr(cx, block_expr, semi_spans, RetReplacement::Empty, None); } else if let Some(stmt) = block.stmts.last() { + if span_contains_cfg( + cx, + Span::between( + stmt.span, + cx.sess().source_map().end_point(block.span), // the closing brace of the block + ), + ) { + return; + } match stmt.kind { StmtKind::Expr(expr) => { check_final_expr(cx, expr, semi_spans, RetReplacement::Empty, None); diff --git a/tests/ui/needless_return.fixed b/tests/ui/needless_return.fixed index d571b97f519..f5f8bb21e81 100644 --- a/tests/ui/needless_return.fixed +++ b/tests/ui/needless_return.fixed @@ -517,3 +517,10 @@ mod else_ifs { } } } + +fn issue14474() -> u64 { + return 456; + + #[cfg(false)] + 123 +} diff --git a/tests/ui/needless_return.rs b/tests/ui/needless_return.rs index 2e4348ea338..495516c1c2e 100644 --- a/tests/ui/needless_return.rs +++ b/tests/ui/needless_return.rs @@ -526,3 +526,10 @@ mod else_ifs { } } } + +fn issue14474() -> u64 { + return 456; + + #[cfg(false)] + 123 +} |
