Emit collapsible_match at the right node

This commit is contained in:
Alex Macleod 2025-02-27 14:21:12 +00:00
parent 527ab050fa
commit 92fc2bb2b8
2 changed files with 14 additions and 2 deletions

View file

@ -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}"));

View file

@ -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!()
}