@@ -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