about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-05-04 13:17:35 +0000
committerbors <bors@rust-lang.org>2022-05-04 13:17:35 +0000
commit751fd0d735dfb2a8b2d061b496d38fae0c101772 (patch)
tree597ac41861c2158cec9c8060383329a03d320467
parenta10fe902d2c7afe3d42e9b00627a6983488521d3 (diff)
parentd53293d52ac69d238b86a8ec8690e446e7ec789a (diff)
downloadrust-751fd0d735dfb2a8b2d061b496d38fae0c101772.tar.gz
rust-751fd0d735dfb2a8b2d061b496d38fae0c101772.zip
Auto merge of #8780 - Alexendoo:init-numbered-field-alias, r=flip1995
Ignore type aliases in `init_numbered_fields`

changelog: Ignore type aliases in [`init_numbered_fields`]

Fixes #8638
-rw-r--r--clippy_lints/src/init_numbered_fields.rs2
-rw-r--r--tests/ui/numbered_fields.fixed5
-rw-r--r--tests/ui/numbered_fields.rs5
3 files changed, 12 insertions, 0 deletions
diff --git a/clippy_lints/src/init_numbered_fields.rs b/clippy_lints/src/init_numbered_fields.rs
index 9284e002409..7e1548531f1 100644
--- a/clippy_lints/src/init_numbered_fields.rs
+++ b/clippy_lints/src/init_numbered_fields.rs
@@ -1,6 +1,7 @@
 use clippy_utils::diagnostics::span_lint_and_sugg;
 use clippy_utils::source::snippet_with_applicability;
 use rustc_errors::Applicability;
+use rustc_hir::def::{DefKind, Res};
 use rustc_hir::{Expr, ExprKind};
 use rustc_lint::{LateContext, LateLintPass};
 use rustc_session::{declare_lint_pass, declare_tool_lint};
@@ -49,6 +50,7 @@ impl<'tcx> LateLintPass<'tcx> for NumberedFields {
                 && fields
                     .iter()
                     .all(|f| f.ident.as_str().as_bytes().iter().all(u8::is_ascii_digit))
+                && !matches!(cx.qpath_res(path, e.hir_id), Res::Def(DefKind::TyAlias, ..))
             {
                 let expr_spans = fields
                     .iter()
diff --git a/tests/ui/numbered_fields.fixed b/tests/ui/numbered_fields.fixed
index 1da97e96879..3710b3e9c81 100644
--- a/tests/ui/numbered_fields.fixed
+++ b/tests/ui/numbered_fields.fixed
@@ -30,4 +30,9 @@ fn main() {
 
     // Ok because it's in macro
     let _ = tuple_struct_init!();
+
+    type Alias = TupleStruct;
+
+    // Aliases can't be tuple constructed #8638
+    let _ = Alias { 0: 0, 1: 1, 2: 2 };
 }
diff --git a/tests/ui/numbered_fields.rs b/tests/ui/numbered_fields.rs
index 08ec405a560..2af84bc0642 100644
--- a/tests/ui/numbered_fields.rs
+++ b/tests/ui/numbered_fields.rs
@@ -38,4 +38,9 @@ fn main() {
 
     // Ok because it's in macro
     let _ = tuple_struct_init!();
+
+    type Alias = TupleStruct;
+
+    // Aliases can't be tuple constructed #8638
+    let _ = Alias { 0: 0, 1: 1, 2: 2 };
 }