Skip to content

Commit cc52746

Browse files
committed
Make visit_place traverse place and have visit_place_base and visit_projection doing the real work
1 parent 47f4975 commit cc52746

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed

src/librustc/mir/visit.rs

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -151,17 +151,17 @@ macro_rules! make_mir_visitor {
151151
self.super_place(place, context, location);
152152
}
153153

154-
fn visit_projection(&mut self,
155-
place: & $($mutability)? Projection<'tcx>,
154+
fn visit_place_base(&mut self,
155+
place_base: & $($mutability)? PlaceBase<'tcx>,
156156
context: PlaceContext,
157157
location: Location) {
158-
self.super_projection(place, context, location);
158+
self.super_place_base(place_base, context, location);
159159
}
160160

161-
fn visit_projection_elem(&mut self,
162-
place: & $($mutability)? PlaceElem<'tcx>,
163-
location: Location) {
164-
self.super_projection_elem(place, location);
161+
fn visit_projection(&mut self,
162+
place: & $($mutability)? Projection<'tcx>,
163+
location: Location) {
164+
self.super_projection(place, location);
165165
}
166166

167167
fn visit_constant(&mut self,
@@ -676,36 +676,40 @@ macro_rules! make_mir_visitor {
676676
context: PlaceContext,
677677
location: Location) {
678678
match place {
679-
Place::Base(PlaceBase::Local(local)) => {
680-
self.visit_local(local, context, location);
681-
}
682-
Place::Base(PlaceBase::Static(box Static { kind: _, ty })) => {
683-
self.visit_ty(& $($mutability)? *ty, TyContext::Location(location));
679+
Place::Base(place_base) => {
680+
self.visit_place_base(place_base, context, location);
684681
}
685682
Place::Projection(proj) => {
686-
self.visit_projection(proj, context, location);
683+
let context = if context.is_mutating_use() {
684+
PlaceContext::MutatingUse(MutatingUseContext::Projection)
685+
} else {
686+
PlaceContext::NonMutatingUse(NonMutatingUseContext::Projection)
687+
};
688+
689+
self.visit_place(& $($mutability)? proj.base, context, location);
690+
self.visit_projection(proj, location);
687691
}
688692
}
689693
}
690694

691-
fn super_projection(&mut self,
692-
proj: & $($mutability)? Projection<'tcx>,
695+
fn super_place_base(&mut self,
696+
place_base: & $($mutability)? PlaceBase<'tcx>,
693697
context: PlaceContext,
694698
location: Location) {
695-
let Projection { base, elem } = proj;
696-
let context = if context.is_mutating_use() {
697-
PlaceContext::MutatingUse(MutatingUseContext::Projection)
698-
} else {
699-
PlaceContext::NonMutatingUse(NonMutatingUseContext::Projection)
700-
};
701-
self.visit_place(base, context, location);
702-
self.visit_projection_elem(elem, location);
699+
match place_base {
700+
PlaceBase::Local(local) => {
701+
self.visit_local(local, context, location);
702+
}
703+
PlaceBase::Static(box Static { kind: _, ty }) => {
704+
self.visit_ty(& $($mutability)? *ty, TyContext::Location(location));
705+
}
706+
}
703707
}
704708

705-
fn super_projection_elem(&mut self,
706-
proj: & $($mutability)? PlaceElem<'tcx>,
707-
location: Location) {
708-
match proj {
709+
fn super_projection(&mut self,
710+
proj: & $($mutability)? Projection<'tcx>,
711+
location: Location) {
712+
match & $($mutability)? proj.elem {
709713
ProjectionElem::Deref => {
710714
}
711715
ProjectionElem::Subslice { from: _, to: _ } => {

0 commit comments

Comments
 (0)