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:
Aaron Hill 2022-01-02 22:37:05 -05:00
parent e4b1d58414
commit 450ef8613c
No known key found for this signature in database
GPG key ID: B4087E510E98B164
38 changed files with 120 additions and 107 deletions

View file

@ -491,7 +491,7 @@ where
if let Some(variant_path) = subpath {
let base_place = tcx.mk_place_elem(
self.place,
ProjectionElem::Downcast(Some(variant.ident.name), variant_index),
ProjectionElem::Downcast(Some(variant.name), variant_index),
);
let fields = self.move_paths_for_fields(base_place, variant_path, &variant, substs);
values.push(discr.val);