]> git.lizzy.rs Git - rust.git/commitdiff
Store a `Symbol` instead of an `Ident` in `VariantDef`/`FieldDef`
authorAaron Hill <aa1ronham@gmail.com>
Mon, 3 Jan 2022 03:37:05 +0000 (22:37 -0500)
committerAaron Hill <aa1ronham@gmail.com>
Tue, 11 Jan 2022 15:16:22 +0000 (10:16 -0500)
The field is also renamed from `ident` to `name. In most cases,
we don't actually need the `Span`. A new `ident` method is added
to `VariantDef` and `FieldDef`, which constructs the full `Ident`
using `tcx.def_ident_span()`. This method is used in the cases
where we actually need an `Ident`.

This makes incremental compilation properly track changes
to the `Span`, without all of the invalidations caused by storing
a `Span` directly via an `Ident`.

clippy_lints/src/default.rs
clippy_lints/src/default_numeric_fallback.rs
clippy_lints/src/inconsistent_struct_constructor.rs
clippy_lints/src/matches.rs

index a0b137efe221a3bc8113a2936403bbce99f9b874..6422f5aabe5e2a3fc93dbeea67a4d41d941f8853 100644 (file)
@@ -198,7 +198,7 @@ fn check_block<'tcx>(&mut self, cx: &LateContext<'tcx>, block: &Block<'tcx>) {
                 let ext_with_default = !variant
                     .fields
                     .iter()
-                    .all(|field| assigned_fields.iter().any(|(a, _)| a == &field.ident.name));
+                    .all(|field| assigned_fields.iter().any(|(a, _)| a == &field.name));
 
                 let field_list = assigned_fields
                     .into_iter()
index 3573ea5f02671becbce4b4f1ddd00559fe9c84c9..15215ac15cdb9d8440dd85c205cd37d2b3187741 100644 (file)
@@ -161,7 +161,7 @@ fn visit_expr(&mut self, expr: &'tcx Expr<'_>) {
                                 fields_def
                                     .iter()
                                     .find_map(|f_def| {
-                                        if f_def.ident == field.ident
+                                        if f_def.ident(self.cx.tcx) == field.ident
                                             { Some(self.cx.tcx.type_of(f_def.did)) }
                                         else { None }
                                     });
index 1debdef9d86c7b077594bef9115ec3fbf70d8f9b..388bb3727f96cfa9753eb7b8df887158526d5be0 100644 (file)
@@ -76,7 +76,7 @@ fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx hir::Expr<'_>) {
             then {
                 let mut def_order_map = FxHashMap::default();
                 for (idx, field) in variant.fields.iter().enumerate() {
-                    def_order_map.insert(field.ident.name, idx);
+                    def_order_map.insert(field.name, idx);
                 }
 
                 if is_consistent_order(fields, &def_order_map) {
index 22970507f964c2c9416ab1fadead327da3637995..5fa8f249e701e91d9b3cadf574f27ab873e0154b 100644 (file)
@@ -1136,7 +1136,7 @@ fn check_wild_enum_match(cx: &LateContext<'_>, ex: &Expr<'_>, arms: &[Arm<'_>])
                 s.push_str("::");
                 s
             },
-            variant.ident.name,
+            variant.name,
             match variant.ctor_kind {
                 CtorKind::Fn if variant.fields.len() == 1 => "(_)",
                 CtorKind::Fn => "(..)",