make super_projection take a PlaceRef

This commit is contained in:
Henry Boisdequin 2021-02-20 16:46:05 +05:30
parent 5ec4b060a7
commit a9c6188889
2 changed files with 6 additions and 7 deletions

View File

@ -1002,7 +1002,7 @@ macro_rules! visit_place_fns {
context: PlaceContext,
location: Location,
) {
self.super_projection(place_ref.local, place_ref.projection, context, location);
self.super_projection(place_ref, context, location);
}
fn visit_projection_elem(
@ -1037,15 +1037,15 @@ macro_rules! visit_place_fns {
fn super_projection(
&mut self,
local: Local,
projection: &[PlaceElem<'tcx>],
place_ref: PlaceRef<'tcx>,
context: PlaceContext,
location: Location,
) {
let mut cursor = projection;
// FIXME: Use PlaceRef::iter_projections, once that exists.
let mut cursor = place_ref.projection;
while let &[ref proj_base @ .., elem] = cursor {
cursor = proj_base;
self.visit_projection_elem(local, cursor, elem, context, location);
self.visit_projection_elem(place_ref.local, cursor, elem, context, location);
}
}

View File

@ -414,8 +414,7 @@ impl UsedLocals {
} else {
// A definition. Although, it still might use other locals for indexing.
self.super_projection(
place.local,
&place.projection,
place.as_ref(),
PlaceContext::MutatingUse(MutatingUseContext::Projection),
location,
);