Skip to content

Commit e8ec242

Browse files
committed
Finish tests - add rustfix
1 parent 1d0acce commit e8ec242

File tree

4 files changed

+69
-2
lines changed

4 files changed

+69
-2
lines changed

clippy_lints/src/methods/clear_with_drain.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ use rustc_span::Span;
1010

1111
use super::CLEAR_WITH_DRAIN;
1212

13-
// TODO: Adjust the parameters as necessary
14-
// see clippy_lints/src/methods/mod.rs to add call to this check in `check_methods`
1513
pub(super) fn check(cx: &LateContext<'_>, expr: &Expr<'_>, recv: &Expr<'_>, span: Span, arg: &Expr<'_>) {
1614
let ty = cx.typeck_results().expr_ty(recv);
1715
if is_type_diagnostic_item(cx, ty, sym::Vec) && let Some(range) = Range::hir(arg) && is_range_full(cx, recv, range)

tests/ui/clear_with_drain.fixed

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// run-rustfix
2+
#![allow(unused)]
3+
#![warn(clippy::clear_with_drain)]
4+
5+
fn range() {
6+
let (mut u, mut v) = (vec![1, 2, 3], vec![1, 2, 3]);
7+
let iter = u.drain(0..u.len()); // Yay
8+
v.clear(); // Nay
9+
}
10+
11+
fn range_from() {
12+
let (mut u, mut v) = (vec![1, 2, 3], vec![1, 2, 3]);
13+
let iter = u.drain(0..); // Yay
14+
v.clear(); // Nay
15+
}
16+
17+
fn range_full() {
18+
let (mut u, mut v) = (vec![1, 2, 3], vec![1, 2, 3]);
19+
let iter = u.drain(..); // Yay
20+
v.clear(); // Nay
21+
}
22+
23+
fn range_to() {
24+
let (mut u, mut v) = (vec![1, 2, 3], vec![1, 2, 3]);
25+
let iter = u.drain(..u.len()); // Yay
26+
v.clear(); // Nay
27+
}
28+
29+
fn partial_drains() {
30+
let mut v = vec![1, 2, 3];
31+
v.drain(1..); // Yay
32+
33+
let mut v = vec![1, 2, 3];
34+
v.drain(..v.len() - 1); // Yay
35+
36+
let mut v = vec![1, 2, 3];
37+
v.drain(1..v.len() - 1); // Yay
38+
}
39+
40+
fn main() {}

tests/ui/clear_with_drain.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// run-rustfix
12
#![allow(unused)]
23
#![warn(clippy::clear_with_drain)]
34

tests/ui/clear_with_drain.stderr

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
error: `drain` used to clear a `Vec`
2+
--> $DIR/clear_with_drain.rs:8:7
3+
|
4+
LL | v.drain(0..v.len()); // Nay
5+
| ^^^^^^^^^^^^^^^^^ help: try: `clear()`
6+
|
7+
= note: `-D clippy::clear-with-drain` implied by `-D warnings`
8+
9+
error: `drain` used to clear a `Vec`
10+
--> $DIR/clear_with_drain.rs:14:7
11+
|
12+
LL | v.drain(0..); // Nay
13+
| ^^^^^^^^^^ help: try: `clear()`
14+
15+
error: `drain` used to clear a `Vec`
16+
--> $DIR/clear_with_drain.rs:20:7
17+
|
18+
LL | v.drain(..); // Nay
19+
| ^^^^^^^^^ help: try: `clear()`
20+
21+
error: `drain` used to clear a `Vec`
22+
--> $DIR/clear_with_drain.rs:26:7
23+
|
24+
LL | v.drain(..v.len()); // Nay
25+
| ^^^^^^^^^^^^^^^^ help: try: `clear()`
26+
27+
error: aborting due to 4 previous errors
28+

0 commit comments

Comments
 (0)