@@ -2,8 +2,8 @@ use clippy_utils::ty::{has_iter_method, implements_trait};
22use  clippy_utils:: { get_parent_expr,  is_integer_const,  path_to_local,  path_to_local_id,  sugg} ; 
33use  rustc_ast:: ast:: { LitIntType ,  LitKind } ; 
44use  rustc_errors:: Applicability ; 
5- use  rustc_hir:: intravisit:: { walk_expr,  walk_local,  walk_pat ,  walk_stmt ,   Visitor } ; 
6- use  rustc_hir:: { BinOpKind ,  BorrowKind ,  Expr ,  ExprKind ,  HirId ,  HirIdMap ,  Local ,  Mutability ,  Pat ,   PatKind ,   Stmt } ; 
5+ use  rustc_hir:: intravisit:: { walk_expr,  walk_local,  Visitor } ; 
6+ use  rustc_hir:: { BinOpKind ,  BorrowKind ,  Expr ,  ExprKind ,  HirId ,  HirIdMap ,  Local ,  Mutability ,  PatKind } ; 
77use  rustc_lint:: LateContext ; 
88use  rustc_middle:: hir:: nested_filter; 
99use  rustc_middle:: ty:: { self ,  Ty } ; 
@@ -253,62 +253,6 @@ fn is_conditional(expr: &Expr<'_>) -> bool {
253253    matches ! ( expr. kind,  ExprKind :: If ( ..)  | ExprKind :: Match ( ..) ) 
254254} 
255255
256- #[ derive( PartialEq ,  Eq ) ]  
257- pub ( super )  enum  Nesting  { 
258-     Unknown ,      // no nesting detected yet 
259-     RuledOut ,     // the iterator is initialized or assigned within scope 
260-     LookFurther ,  // no nesting detected, no further walk required 
261- } 
262- 
263- use  self :: Nesting :: { LookFurther ,  RuledOut ,  Unknown } ; 
264- 
265- pub ( super )  struct  LoopNestVisitor  { 
266-     pub ( super )  hir_id :  HirId , 
267-     pub ( super )  iterator :  HirId , 
268-     pub ( super )  nesting :  Nesting , 
269- } 
270- 
271- impl < ' tcx >  Visitor < ' tcx >  for  LoopNestVisitor  { 
272-     fn  visit_stmt ( & mut  self ,  stmt :  & ' tcx  Stmt < ' _ > )  { 
273-         if  stmt. hir_id  == self . hir_id  { 
274-             self . nesting  = LookFurther ; 
275-         }  else  if  self . nesting  == Unknown  { 
276-             walk_stmt ( self ,  stmt) ; 
277-         } 
278-     } 
279- 
280-     fn  visit_expr ( & mut  self ,  expr :  & ' tcx  Expr < ' _ > )  { 
281-         if  self . nesting  != Unknown  { 
282-             return ; 
283-         } 
284-         if  expr. hir_id  == self . hir_id  { 
285-             self . nesting  = LookFurther ; 
286-             return ; 
287-         } 
288-         match  expr. kind  { 
289-             ExprKind :: Assign ( path,  _,  _)  | ExprKind :: AssignOp ( _,  path,  _)  => { 
290-                 if  path_to_local_id ( path,  self . iterator )  { 
291-                     self . nesting  = RuledOut ; 
292-                 } 
293-             } , 
294-             _ => walk_expr ( self ,  expr) , 
295-         } 
296-     } 
297- 
298-     fn  visit_pat ( & mut  self ,  pat :  & ' tcx  Pat < ' _ > )  { 
299-         if  self . nesting  != Unknown  { 
300-             return ; 
301-         } 
302-         if  let  PatKind :: Binding ( _,  id,  ..)  = pat. kind  { 
303-             if  id == self . iterator  { 
304-                 self . nesting  = RuledOut ; 
305-                 return ; 
306-             } 
307-         } 
308-         walk_pat ( self ,  pat) ; 
309-     } 
310- } 
311- 
312256/// If `arg` was the argument to a `for` loop, return the "cleanest" way of writing the 
313257/// actual `Iterator` that the loop uses. 
314258pub ( super )  fn  make_iterator_snippet ( cx :  & LateContext < ' _ > ,  arg :  & Expr < ' _ > ,  applic_ref :  & mut  Applicability )  -> String  { 
0 commit comments