Skip to content

Commit b38a2d7

Browse files
committed
UI test cleanup: Extract for_kv_map lint tests
1 parent 85ba5f0 commit b38a2d7

File tree

4 files changed

+122
-106
lines changed

4 files changed

+122
-106
lines changed

tests/ui/for_kv_map.rs

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution.
3+
//
4+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
5+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
7+
// option. This file may not be copied, modified, or distributed
8+
// except according to those terms.
9+
10+
#![warn(clippy::for_kv_map)]
11+
#![allow(clippy::used_underscore_binding)]
12+
13+
use std::collections::*;
14+
use std::rc::Rc;
15+
16+
fn main() {
17+
let m: HashMap<u64, u64> = HashMap::new();
18+
for (_, v) in &m {
19+
let _v = v;
20+
}
21+
22+
let m: Rc<HashMap<u64, u64>> = Rc::new(HashMap::new());
23+
for (_, v) in &*m {
24+
let _v = v;
25+
// Here the `*` is not actually necessary, but the test tests that we don't
26+
// suggest
27+
// `in *m.values()` as we used to
28+
}
29+
30+
let mut m: HashMap<u64, u64> = HashMap::new();
31+
for (_, v) in &mut m {
32+
let _v = v;
33+
}
34+
35+
let m: &mut HashMap<u64, u64> = &mut HashMap::new();
36+
for (_, v) in &mut *m {
37+
let _v = v;
38+
}
39+
40+
let m: HashMap<u64, u64> = HashMap::new();
41+
let rm = &m;
42+
for (k, _value) in rm {
43+
let _k = k;
44+
}
45+
test_for_kv_map();
46+
}
47+
48+
fn test_for_kv_map() {
49+
let m: HashMap<u64, u64> = HashMap::new();
50+
51+
// No error, _value is actually used
52+
for (k, _value) in &m {
53+
let _ = _value;
54+
let _k = k;
55+
}
56+
}

tests/ui/for_kv_map.stderr

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
error: you seem to want to iterate on a map's values
2+
--> $DIR/for_kv_map.rs:18:19
3+
|
4+
LL | for (_, v) in &m {
5+
| ^^
6+
|
7+
= note: `-D clippy::for-kv-map` implied by `-D warnings`
8+
help: use the corresponding method
9+
|
10+
LL | for v in m.values() {
11+
| ^ ^^^^^^^^^^
12+
13+
error: you seem to want to iterate on a map's values
14+
--> $DIR/for_kv_map.rs:23:19
15+
|
16+
LL | for (_, v) in &*m {
17+
| ^^^
18+
help: use the corresponding method
19+
|
20+
LL | for v in (*m).values() {
21+
| ^ ^^^^^^^^^^^^^
22+
23+
error: you seem to want to iterate on a map's values
24+
--> $DIR/for_kv_map.rs:31:19
25+
|
26+
LL | for (_, v) in &mut m {
27+
| ^^^^^^
28+
help: use the corresponding method
29+
|
30+
LL | for v in m.values_mut() {
31+
| ^ ^^^^^^^^^^^^^^
32+
33+
error: you seem to want to iterate on a map's values
34+
--> $DIR/for_kv_map.rs:36:19
35+
|
36+
LL | for (_, v) in &mut *m {
37+
| ^^^^^^^
38+
help: use the corresponding method
39+
|
40+
LL | for v in (*m).values_mut() {
41+
| ^ ^^^^^^^^^^^^^^^^^
42+
43+
error: you seem to want to iterate on a map's keys
44+
--> $DIR/for_kv_map.rs:42:24
45+
|
46+
LL | for (k, _value) in rm {
47+
| ^^
48+
help: use the corresponding method
49+
|
50+
LL | for k in rm.keys() {
51+
| ^ ^^^^^^^^^
52+
53+
error: aborting due to 5 previous errors
54+

tests/ui/for_loop.rs

-42
Original file line numberDiff line numberDiff line change
@@ -333,37 +333,6 @@ fn main() {
333333
}
334334
println!("index: {}", index);
335335

336-
let m: HashMap<u64, u64> = HashMap::new();
337-
for (_, v) in &m {
338-
let _v = v;
339-
}
340-
341-
let m: Rc<HashMap<u64, u64>> = Rc::new(HashMap::new());
342-
for (_, v) in &*m {
343-
let _v = v;
344-
// Here the `*` is not actually necessary, but the test tests that we don't
345-
// suggest
346-
// `in *m.values()` as we used to
347-
}
348-
349-
let mut m: HashMap<u64, u64> = HashMap::new();
350-
for (_, v) in &mut m {
351-
let _v = v;
352-
}
353-
354-
let m: &mut HashMap<u64, u64> = &mut HashMap::new();
355-
for (_, v) in &mut *m {
356-
let _v = v;
357-
}
358-
359-
let m: HashMap<u64, u64> = HashMap::new();
360-
let rm = &m;
361-
for (k, _value) in rm {
362-
let _k = k;
363-
}
364-
365-
test_for_kv_map();
366-
367336
fn f<T>(_: &T, _: &T) -> bool {
368337
unimplemented!()
369338
}
@@ -381,17 +350,6 @@ fn main() {
381350
}
382351
}
383352

384-
#[allow(clippy::used_underscore_binding)]
385-
fn test_for_kv_map() {
386-
let m: HashMap<u64, u64> = HashMap::new();
387-
388-
// No error, _value is actually used
389-
for (k, _value) in &m {
390-
let _ = _value;
391-
let _k = k;
392-
}
393-
}
394-
395353
#[allow(dead_code)]
396354
fn partition<T: PartialOrd + Send>(v: &mut [T]) -> usize {
397355
let pivot = v.len() - 1;

tests/ui/for_loop.stderr

+12-64
Original file line numberDiff line numberDiff line change
@@ -292,92 +292,40 @@ LL | vec.iter().cloned().map(|x| out.push(x)).collect::<Vec<_>>();
292292
|
293293
= note: `-D clippy::unused-collect` implied by `-D warnings`
294294

295-
error: you seem to want to iterate on a map's values
296-
--> $DIR/for_loop.rs:337:19
297-
|
298-
LL | for (_, v) in &m {
299-
| ^^
300-
|
301-
= note: `-D clippy::for-kv-map` implied by `-D warnings`
302-
help: use the corresponding method
303-
|
304-
LL | for v in m.values() {
305-
| ^ ^^^^^^^^^^
306-
307-
error: you seem to want to iterate on a map's values
308-
--> $DIR/for_loop.rs:342:19
309-
|
310-
LL | for (_, v) in &*m {
311-
| ^^^
312-
help: use the corresponding method
313-
|
314-
LL | for v in (*m).values() {
315-
| ^ ^^^^^^^^^^^^^
316-
317-
error: you seem to want to iterate on a map's values
318-
--> $DIR/for_loop.rs:350:19
319-
|
320-
LL | for (_, v) in &mut m {
321-
| ^^^^^^
322-
help: use the corresponding method
323-
|
324-
LL | for v in m.values_mut() {
325-
| ^ ^^^^^^^^^^^^^^
326-
327-
error: you seem to want to iterate on a map's values
328-
--> $DIR/for_loop.rs:355:19
329-
|
330-
LL | for (_, v) in &mut *m {
331-
| ^^^^^^^
332-
help: use the corresponding method
333-
|
334-
LL | for v in (*m).values_mut() {
335-
| ^ ^^^^^^^^^^^^^^^^^
336-
337-
error: you seem to want to iterate on a map's keys
338-
--> $DIR/for_loop.rs:361:24
339-
|
340-
LL | for (k, _value) in rm {
341-
| ^^
342-
help: use the corresponding method
343-
|
344-
LL | for k in rm.keys() {
345-
| ^ ^^^^^^^^^
346-
347295
error: it looks like you're manually copying between slices
348-
--> $DIR/for_loop.rs:414:14
296+
--> $DIR/for_loop.rs:372:14
349297
|
350298
LL | for i in 0..src.len() {
351299
| ^^^^^^^^^^^^ help: try replacing the loop by: `dst[..src.len()].clone_from_slice(&src[..])`
352300
|
353301
= note: `-D clippy::manual-memcpy` implied by `-D warnings`
354302

355303
error: it looks like you're manually copying between slices
356-
--> $DIR/for_loop.rs:419:14
304+
--> $DIR/for_loop.rs:377:14
357305
|
358306
LL | for i in 0..src.len() {
359307
| ^^^^^^^^^^^^ help: try replacing the loop by: `dst[10..(src.len() + 10)].clone_from_slice(&src[..])`
360308

361309
error: it looks like you're manually copying between slices
362-
--> $DIR/for_loop.rs:424:14
310+
--> $DIR/for_loop.rs:382:14
363311
|
364312
LL | for i in 0..src.len() {
365313
| ^^^^^^^^^^^^ help: try replacing the loop by: `dst[..src.len()].clone_from_slice(&src[10..])`
366314

367315
error: it looks like you're manually copying between slices
368-
--> $DIR/for_loop.rs:429:14
316+
--> $DIR/for_loop.rs:387:14
369317
|
370318
LL | for i in 11..src.len() {
371319
| ^^^^^^^^^^^^^ help: try replacing the loop by: `dst[11..src.len()].clone_from_slice(&src[(11 - 10)..(src.len() - 10)])`
372320

373321
error: it looks like you're manually copying between slices
374-
--> $DIR/for_loop.rs:434:14
322+
--> $DIR/for_loop.rs:392:14
375323
|
376324
LL | for i in 0..dst.len() {
377325
| ^^^^^^^^^^^^ help: try replacing the loop by: `dst.clone_from_slice(&src[..dst.len()])`
378326

379327
error: it looks like you're manually copying between slices
380-
--> $DIR/for_loop.rs:447:14
328+
--> $DIR/for_loop.rs:405:14
381329
|
382330
LL | for i in 10..256 {
383331
| ^^^^^^^
@@ -388,34 +336,34 @@ LL | dst2[(10 + 500)..(256 + 500)].clone_from_slice(&src[10..256]) {
388336
|
389337

390338
error: it looks like you're manually copying between slices
391-
--> $DIR/for_loop.rs:459:14
339+
--> $DIR/for_loop.rs:417:14
392340
|
393341
LL | for i in 10..LOOP_OFFSET {
394342
| ^^^^^^^^^^^^^^^ help: try replacing the loop by: `dst[(10 + LOOP_OFFSET)..(LOOP_OFFSET + LOOP_OFFSET)].clone_from_slice(&src[(10 - some_var)..(LOOP_OFFSET - some_var)])`
395343

396344
error: it looks like you're manually copying between slices
397-
--> $DIR/for_loop.rs:472:14
345+
--> $DIR/for_loop.rs:430:14
398346
|
399347
LL | for i in 0..src_vec.len() {
400348
| ^^^^^^^^^^^^^^^^ help: try replacing the loop by: `dst_vec[..src_vec.len()].clone_from_slice(&src_vec[..])`
401349

402350
error: it looks like you're manually copying between slices
403-
--> $DIR/for_loop.rs:501:14
351+
--> $DIR/for_loop.rs:459:14
404352
|
405353
LL | for i in from..from + src.len() {
406354
| ^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `dst[from..from + src.len()].clone_from_slice(&src[0..(from + src.len() - from)])`
407355

408356
error: it looks like you're manually copying between slices
409-
--> $DIR/for_loop.rs:505:14
357+
--> $DIR/for_loop.rs:463:14
410358
|
411359
LL | for i in from..from + 3 {
412360
| ^^^^^^^^^^^^^^ help: try replacing the loop by: `dst[from..from + 3].clone_from_slice(&src[0..(from + 3 - from)])`
413361

414362
error: it looks like you're manually copying between slices
415-
--> $DIR/for_loop.rs:512:14
363+
--> $DIR/for_loop.rs:470:14
416364
|
417365
LL | for i in 0..src.len() {
418366
| ^^^^^^^^^^^^ help: try replacing the loop by: `dst[..src.len()].clone_from_slice(&src[..])`
419367

420-
error: aborting due to 51 previous errors
368+
error: aborting due to 46 previous errors
421369

0 commit comments

Comments
 (0)