diff options
| author | Alex Macleod <alex@macleod.io> | 2025-02-27 14:21:12 +0000 |
|---|---|---|
| committer | Alex Macleod <alex@macleod.io> | 2025-02-27 14:21:12 +0000 |
| commit | 92fc2bb2b8e2640baa9f8e6ac73d209e506ec99c (patch) | |
| tree | 21d94b01681c931e41b6f4f1613e5105fe34784c | |
| parent | 527ab050faf7f8ce12290a2c00c59be98cffb221 (diff) | |
| download | rust-92fc2bb2b8e2640baa9f8e6ac73d209e506ec99c.tar.gz rust-92fc2bb2b8e2640baa9f8e6ac73d209e506ec99c.zip | |
Emit `collapsible_match` at the right node
| -rw-r--r-- | clippy_lints/src/matches/collapsible_match.rs | 4 | ||||
| -rw-r--r-- | tests/ui/collapsible_match.rs | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/clippy_lints/src/matches/collapsible_match.rs b/clippy_lints/src/matches/collapsible_match.rs index 97e8423695d..4c46084db87 100644 --- a/clippy_lints/src/matches/collapsible_match.rs +++ b/clippy_lints/src/matches/collapsible_match.rs @@ -1,4 +1,4 @@ -use clippy_utils::diagnostics::span_lint_and_then; +use clippy_utils::diagnostics::span_lint_hir_and_then; use clippy_utils::higher::IfLetOrMatch; use clippy_utils::msrvs::Msrv; use clippy_utils::source::snippet; @@ -99,7 +99,7 @@ fn check_arm<'tcx>( } else { String::new() }; - span_lint_and_then(cx, COLLAPSIBLE_MATCH, inner_expr.span, msg, |diag| { + span_lint_hir_and_then(cx, COLLAPSIBLE_MATCH, inner_expr.hir_id, inner_expr.span, msg, |diag| { let mut help_span = MultiSpan::from_spans(vec![binding_span, inner_then_pat.span]); help_span.push_span_label(binding_span, "replace this binding"); help_span.push_span_label(inner_then_pat.span, format!("with this pattern{replace_msg}")); diff --git a/tests/ui/collapsible_match.rs b/tests/ui/collapsible_match.rs index 796cabd4b66..55ef5584495 100644 --- a/tests/ui/collapsible_match.rs +++ b/tests/ui/collapsible_match.rs @@ -303,6 +303,18 @@ pub fn test_2(x: Issue9647) { } } +// https://github.com/rust-lang/rust-clippy/issues/14281 +fn lint_emitted_at_right_node(opt: Option<Result<u64, String>>) { + let n = match opt { + #[expect(clippy::collapsible_match)] + Some(n) => match n { + Ok(n) => n, + _ => return, + }, + None => return, + }; +} + fn make<T>() -> T { unimplemented!() } |
