Store a Symbol instead of an Ident in VariantDef/FieldDef
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`.
This commit is contained in:
@@ -198,7 +198,7 @@ impl LateLintPass<'_> for Default {
|
|||||||
let ext_with_default = !variant
|
let ext_with_default = !variant
|
||||||
.fields
|
.fields
|
||||||
.iter()
|
.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
|
let field_list = assigned_fields
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ impl<'a, 'tcx> Visitor<'tcx> for NumericFallbackVisitor<'a, 'tcx> {
|
|||||||
fields_def
|
fields_def
|
||||||
.iter()
|
.iter()
|
||||||
.find_map(|f_def| {
|
.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)) }
|
{ Some(self.cx.tcx.type_of(f_def.did)) }
|
||||||
else { None }
|
else { None }
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ impl LateLintPass<'_> for InconsistentStructConstructor {
|
|||||||
then {
|
then {
|
||||||
let mut def_order_map = FxHashMap::default();
|
let mut def_order_map = FxHashMap::default();
|
||||||
for (idx, field) in variant.fields.iter().enumerate() {
|
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) {
|
if is_consistent_order(fields, &def_order_map) {
|
||||||
|
|||||||
@@ -1136,7 +1136,7 @@ fn check_wild_enum_match(cx: &LateContext<'_>, ex: &Expr<'_>, arms: &[Arm<'_>])
|
|||||||
s.push_str("::");
|
s.push_str("::");
|
||||||
s
|
s
|
||||||
},
|
},
|
||||||
variant.ident.name,
|
variant.name,
|
||||||
match variant.ctor_kind {
|
match variant.ctor_kind {
|
||||||
CtorKind::Fn if variant.fields.len() == 1 => "(_)",
|
CtorKind::Fn if variant.fields.len() == 1 => "(_)",
|
||||||
CtorKind::Fn => "(..)",
|
CtorKind::Fn => "(..)",
|
||||||
|
|||||||
Reference in New Issue
Block a user