@@ -61,11 +61,19 @@ declare_clippy_lint! {
61
61
/// **Known problems:** None.
62
62
///
63
63
/// **Example:**
64
- /// ```ignore
64
+ /// ```rust
65
+ /// let vec = vec!['a', 'b', 'c'];
65
66
/// for i in 0..vec.len() {
66
67
/// println!("{}", vec[i]);
67
68
/// }
68
69
/// ```
70
+ /// Could be written as:
71
+ /// ```rust
72
+ /// let vec = vec!['a', 'b', 'c'];
73
+ /// for i in vec {
74
+ /// println!("{}", i);
75
+ /// }
76
+ /// ```
69
77
pub NEEDLESS_RANGE_LOOP ,
70
78
style,
71
79
"for-looping over a range of indices where an iterator over items would do"
@@ -1662,7 +1670,16 @@ fn check_for_mutation(
1662
1670
} ;
1663
1671
let def_id = def_id:: DefId :: local ( body. hir_id . owner ) ;
1664
1672
let region_scope_tree = & cx. tcx . region_scope_tree ( def_id) ;
1665
- ExprUseVisitor :: new ( & mut delegate, cx. tcx , cx. param_env , region_scope_tree, cx. tables , None ) . walk_expr ( body) ;
1673
+ ExprUseVisitor :: new (
1674
+ & mut delegate,
1675
+ cx. tcx ,
1676
+ def_id,
1677
+ cx. param_env ,
1678
+ region_scope_tree,
1679
+ cx. tables ,
1680
+ None ,
1681
+ )
1682
+ . walk_expr ( body) ;
1666
1683
delegate. mutation_span ( )
1667
1684
}
1668
1685
@@ -1769,7 +1786,7 @@ impl<'a, 'tcx> VarVisitor<'a, 'tcx> {
1769
1786
}
1770
1787
let res = self . cx. tables. qpath_res( seqpath, seqexpr. hir_id) ;
1771
1788
match res {
1772
- Res :: Local ( hir_id) | Res :: Upvar ( hir_id , .. ) => {
1789
+ Res :: Local ( hir_id) => {
1773
1790
let parent_id = self . cx. tcx. hir( ) . get_parent_item( expr. hir_id) ;
1774
1791
let parent_def_id = self . cx. tcx. hir( ) . local_def_id_from_hir_id( parent_id) ;
1775
1792
let extent = self . cx. tcx. region_scope_tree( parent_def_id) . var_scope( hir_id. local_id) ;
@@ -1829,24 +1846,13 @@ impl<'a, 'tcx> Visitor<'tcx> for VarVisitor<'a, 'tcx> {
1829
1846
if let QPath :: Resolved ( None , ref path) = * qpath;
1830
1847
if path. segments. len( ) == 1 ;
1831
1848
then {
1832
- match self . cx. tables. qpath_res( qpath, expr. hir_id) {
1833
- Res :: Upvar ( local_id, ..) => {
1834
- if local_id == self . var {
1835
- // we are not indexing anything, record that
1836
- self . nonindex = true ;
1837
- }
1838
- }
1839
- Res :: Local ( local_id) =>
1840
- {
1841
-
1842
- if local_id == self . var {
1843
- self . nonindex = true ;
1844
- } else {
1845
- // not the correct variable, but still a variable
1846
- self . referenced. insert( path. segments[ 0 ] . ident. name) ;
1847
- }
1849
+ if let Res :: Local ( local_id) = self . cx. tables. qpath_res( qpath, expr. hir_id) {
1850
+ if local_id == self . var {
1851
+ self . nonindex = true ;
1852
+ } else {
1853
+ // not the correct variable, but still a variable
1854
+ self . referenced. insert( path. segments[ 0 ] . ident. name) ;
1848
1855
}
1849
- _ => { }
1850
1856
}
1851
1857
}
1852
1858
}
@@ -2378,7 +2384,7 @@ impl<'a, 'tcx> VarCollectorVisitor<'a, 'tcx> {
2378
2384
let res = self . cx. tables. qpath_res( qpath, ex. hir_id) ;
2379
2385
then {
2380
2386
match res {
2381
- Res :: Local ( node_id) | Res :: Upvar ( node_id , .. ) => {
2387
+ Res :: Local ( node_id) => {
2382
2388
self . ids. insert( node_id) ;
2383
2389
} ,
2384
2390
Res :: Def ( DefKind :: Static , def_id) => {
0 commit comments