Add tests for #1654

This commit is contained in:
flip1995 2020-04-25 20:51:23 +02:00
parent eadd9d24dc
commit a1826222cf
No known key found for this signature in database
GPG Key ID: 2CEFCDB27ED0BE79
3 changed files with 41 additions and 15 deletions

View File

@ -119,10 +119,7 @@ fn issue2965() {
let mut values = HashSet::new();
values.insert(1);
for _ in values.iter() {
// FIXME(flip1995): Linting this with the following line uncommented is a FP, see #1654
// values.remove(&1);
}
while let Some(..) = values.iter().next() {}
}
fn issue3670() {
@ -134,6 +131,24 @@ fn issue3670() {
}
}
fn issue1654() {
// should not lint if the iterator is generated on every iteration
use std::collections::HashSet;
let mut values = HashSet::new();
values.insert(1);
while let Some(..) = values.iter().next() {
values.remove(&1);
}
while let Some(..) = values.iter().map(|x| x + 1).next() {}
let chars = "Hello, World!".char_indices();
while let Some((i, ch)) = chars.clone().next() {
println!("{}: {}", i, ch);
}
}
fn main() {
base();
refutable();
@ -141,4 +156,5 @@ fn main() {
issue1121();
issue2965();
issue3670();
issue1654();
}

View File

@ -119,10 +119,7 @@ fn issue2965() {
let mut values = HashSet::new();
values.insert(1);
while let Some(..) = values.iter().next() {
// FIXME(flip1995): Linting this with the following line uncommented is a FP, see #1654
// values.remove(&1);
}
while let Some(..) = values.iter().next() {}
}
fn issue3670() {
@ -134,6 +131,24 @@ fn issue3670() {
}
}
fn issue1654() {
// should not lint if the iterator is generated on every iteration
use std::collections::HashSet;
let mut values = HashSet::new();
values.insert(1);
while let Some(..) = values.iter().next() {
values.remove(&1);
}
while let Some(..) = values.iter().map(|x| x + 1).next() {}
let chars = "Hello, World!".char_indices();
while let Some((i, ch)) = chars.clone().next() {
println!("{}: {}", i, ch);
}
}
fn main() {
base();
refutable();
@ -141,4 +156,5 @@ fn main() {
issue1121();
issue2965();
issue3670();
issue1654();
}

View File

@ -24,11 +24,5 @@ error: this loop could be written as a `for` loop
LL | while let Some(_) = y.next() {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for _ in y`
error: this loop could be written as a `for` loop
--> $DIR/while_let_on_iterator.rs:122:5
|
LL | while let Some(..) = values.iter().next() {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for _ in values.iter()`
error: aborting due to 5 previous errors
error: aborting due to 4 previous errors