-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
3372: UI test cleanup: Extract explicit_counter_loop tests r=matthiaskrgr a=phansch cc #2038 Co-authored-by: Philipp Hansch <dev@phansch.net>
- Loading branch information
Showing
4 changed files
with
191 additions
and
177 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
// Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT | ||
// file at the top-level directory of this distribution. | ||
// | ||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | ||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | ||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | ||
// option. This file may not be copied, modified, or distributed | ||
// except according to those terms. | ||
|
||
#![warn(clippy::explicit_counter_loop)] | ||
|
||
fn main() { | ||
let mut vec = vec![1, 2, 3, 4]; | ||
let mut _index = 0; | ||
for _v in &vec { | ||
_index += 1 | ||
} | ||
|
||
let mut _index = 1; | ||
_index = 0; | ||
for _v in &vec { | ||
_index += 1 | ||
} | ||
} | ||
|
||
mod issue_1219 { | ||
pub fn test() { | ||
// should not trigger the lint because variable is used after the loop #473 | ||
let vec = vec![1,2,3]; | ||
let mut index = 0; | ||
for _v in &vec { index += 1 } | ||
println!("index: {}", index); | ||
|
||
// should not trigger the lint because the count is conditional #1219 | ||
let text = "banana"; | ||
let mut count = 0; | ||
for ch in text.chars() { | ||
if ch == 'a' { | ||
continue; | ||
} | ||
count += 1; | ||
println!("{}", count); | ||
} | ||
|
||
// should not trigger the lint because the count is conditional | ||
let text = "banana"; | ||
let mut count = 0; | ||
for ch in text.chars() { | ||
if ch == 'a' { | ||
count += 1; | ||
} | ||
println!("{}", count); | ||
} | ||
|
||
// should trigger the lint because the count is not conditional | ||
let text = "banana"; | ||
let mut count = 0; | ||
for ch in text.chars() { | ||
count += 1; | ||
if ch == 'a' { | ||
continue; | ||
} | ||
println!("{}", count); | ||
} | ||
|
||
// should trigger the lint because the count is not conditional | ||
let text = "banana"; | ||
let mut count = 0; | ||
for ch in text.chars() { | ||
count += 1; | ||
for i in 0..2 { | ||
let _ = 123; | ||
} | ||
println!("{}", count); | ||
} | ||
|
||
// should not trigger the lint because the count is incremented multiple times | ||
let text = "banana"; | ||
let mut count = 0; | ||
for ch in text.chars() { | ||
count += 1; | ||
for i in 0..2 { | ||
count += 1; | ||
} | ||
println!("{}", count); | ||
} | ||
} | ||
} | ||
|
||
mod issue_3308 { | ||
pub fn test() { | ||
// should not trigger the lint because the count is incremented multiple times | ||
let mut skips = 0; | ||
let erasures = vec![]; | ||
for i in 0..10 { | ||
while erasures.contains(&(i + skips)) { | ||
skips += 1; | ||
} | ||
println!("{}", skips); | ||
} | ||
|
||
// should not trigger the lint because the count is incremented multiple times | ||
let mut skips = 0; | ||
for i in 0..10 { | ||
let mut j = 0; | ||
while j < 5 { | ||
skips += 1; | ||
j += 1; | ||
} | ||
println!("{}", skips); | ||
} | ||
|
||
// should not trigger the lint because the count is incremented multiple times | ||
let mut skips = 0; | ||
for i in 0..10 { | ||
for j in 0..5 { | ||
skips += 1; | ||
} | ||
println!("{}", skips); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
error: the variable `_index` is used as a loop counter. Consider using `for (_index, item) in &vec.enumerate()` or similar iterators | ||
--> $DIR/explicit_counter_loop.rs:15:15 | ||
| | ||
15 | for _v in &vec { | ||
| ^^^^ | ||
| | ||
= note: `-D clippy::explicit-counter-loop` implied by `-D warnings` | ||
|
||
error: the variable `_index` is used as a loop counter. Consider using `for (_index, item) in &vec.enumerate()` or similar iterators | ||
--> $DIR/explicit_counter_loop.rs:21:15 | ||
| | ||
21 | for _v in &vec { | ||
| ^^^^ | ||
|
||
error: the variable `count` is used as a loop counter. Consider using `for (count, item) in text.chars().enumerate()` or similar iterators | ||
--> $DIR/explicit_counter_loop.rs:58:19 | ||
| | ||
58 | for ch in text.chars() { | ||
| ^^^^^^^^^^^^ | ||
|
||
error: the variable `count` is used as a loop counter. Consider using `for (count, item) in text.chars().enumerate()` or similar iterators | ||
--> $DIR/explicit_counter_loop.rs:69:19 | ||
| | ||
69 | for ch in text.chars() { | ||
| ^^^^^^^^^^^^ | ||
|
||
error: aborting due to 4 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.