diff options
| author | Ada Alakbarova <ada.alakbarova@proton.me> | 2025-08-20 10:59:02 +0200 |
|---|---|---|
| committer | Ada Alakbarova <ada.alakbarova@proton.me> | 2025-08-22 15:03:13 +0200 |
| commit | abb89608af8e5eae6f89a9b06bd9b5a10ca2afe9 (patch) | |
| tree | e7ed32baf809e9a3808a88b74803f5fa7ecaa229 | |
| parent | 02bc3c94d2489cf7f8a77fb0a5ac2e5c89f0ed0b (diff) | |
| download | rust-abb89608af8e5eae6f89a9b06bd9b5a10ca2afe9.tar.gz rust-abb89608af8e5eae6f89a9b06bd9b5a10ca2afe9.zip | |
higher: use `get_diagnostic_name`
| -rw-r--r-- | clippy_utils/src/higher.rs | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/clippy_utils/src/higher.rs b/clippy_utils/src/higher.rs index 4e0b00df950..9db18f66e9a 100644 --- a/clippy_utils/src/higher.rs +++ b/clippy_utils/src/higher.rs @@ -288,22 +288,23 @@ impl<'a> VecArgs<'a> { && is_expn_of(fun.span, sym::vec).is_some() && let Some(fun_def_id) = cx.qpath_res(qpath, fun.hir_id).opt_def_id() { - return if cx.tcx.is_diagnostic_item(sym::vec_from_elem, fun_def_id) && args.len() == 2 { - // `vec![elem; size]` case - Some(VecArgs::Repeat(&args[0], &args[1])) - } else if cx.tcx.is_diagnostic_item(sym::slice_into_vec, fun_def_id) && args.len() == 1 { - // `vec![a, b, c]` case - if let ExprKind::Call(_, [arg]) = &args[0].kind - && let ExprKind::Array(args) = arg.kind - { - Some(VecArgs::Vec(args)) - } else { - None - } - } else if cx.tcx.is_diagnostic_item(sym::vec_new, fun_def_id) && args.is_empty() { - Some(VecArgs::Vec(&[])) - } else { - None + return match (cx.tcx.get_diagnostic_name(fun_def_id), args.len()) { + (Some(sym::vec_from_elem), 2) => { + // `vec![elem; size]` case + Some(VecArgs::Repeat(&args[0], &args[1])) + }, + (Some(sym::slice_into_vec), 1) => { + // `vec![a, b, c]` case + if let ExprKind::Call(_, [arg]) = &args[0].kind + && let ExprKind::Array(args) = arg.kind + { + Some(VecArgs::Vec(args)) + } else { + None + } + }, + (Some(sym::vec_new), 0) => Some(VecArgs::Vec(&[])), + _ => None, }; } |
