@@ -141,7 +141,7 @@ use rustc_data_structures::fx::FxIndexMap;
141141use rustc_index:: bit_set:: DenseBitSet ;
142142use rustc_index:: interval:: SparseIntervalMatrix ;
143143use rustc_index:: { IndexVec , newtype_index} ;
144- use rustc_middle:: mir:: visit:: { MutVisitor , NonMutatingUseContext , PlaceContext , Visitor } ;
144+ use rustc_middle:: mir:: visit:: { MutVisitor , PlaceContext , Visitor } ;
145145use rustc_middle:: mir:: * ;
146146use rustc_middle:: ty:: TyCtxt ;
147147use rustc_mir_dataflow:: impls:: { DefUse , MaybeLiveLocals } ;
@@ -555,24 +555,13 @@ impl<'tcx, F> Visitor<'tcx> for VisitPlacesWith<F>
555555where
556556 F : FnMut ( Place < ' tcx > , PlaceContext ) ,
557557{
558- fn visit_place ( & mut self , place : & Place < ' tcx > , ctxt : PlaceContext , _: Location ) {
558+ fn visit_local ( & mut self , local : Local , ctxt : PlaceContext , _: Location ) {
559+ ( self . 0 ) ( local. into ( ) , ctxt) ;
560+ }
561+
562+ fn visit_place ( & mut self , place : & Place < ' tcx > , ctxt : PlaceContext , location : Location ) {
559563 ( self . 0 ) ( * place, ctxt) ;
560- for proj in place. projection . iter ( ) {
561- match proj {
562- ProjectionElem :: Index ( index) => ( self . 0 ) (
563- index. into ( ) ,
564- PlaceContext :: NonMutatingUse ( NonMutatingUseContext :: Copy ) ,
565- ) ,
566- ProjectionElem :: Deref
567- | ProjectionElem :: Field ( ..)
568- | ProjectionElem :: Downcast ( ..)
569- | ProjectionElem :: ConstantIndex { .. }
570- | ProjectionElem :: Subslice { .. }
571- | ProjectionElem :: OpaqueCast ( ..)
572- | ProjectionElem :: UnwrapUnsafeBinder ( ..)
573- | ProjectionElem :: Subtype ( ..) => { }
574- } ;
575- }
564+ self . visit_projection ( place. as_ref ( ) , ctxt, location) ;
576565 }
577566}
578567
0 commit comments