about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAda Alakbarova <ada.alakbarova@proton.me>2025-08-20 10:59:02 +0200
committerAda Alakbarova <ada.alakbarova@proton.me>2025-08-22 15:03:13 +0200
commitabb89608af8e5eae6f89a9b06bd9b5a10ca2afe9 (patch)
treee7ed32baf809e9a3808a88b74803f5fa7ecaa229
parent02bc3c94d2489cf7f8a77fb0a5ac2e5c89f0ed0b (diff)
downloadrust-abb89608af8e5eae6f89a9b06bd9b5a10ca2afe9.tar.gz
rust-abb89608af8e5eae6f89a9b06bd9b5a10ca2afe9.zip
higher: use `get_diagnostic_name`
-rw-r--r--clippy_utils/src/higher.rs33
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,
             };
         }