merge explicit_into_iter_fn_arg into useless_conversion

This commit is contained in:
y21 2023-05-30 22:32:26 +02:00
parent 6a76101d3a
commit de1f410018
11 changed files with 234 additions and 258 deletions

View file

@ -1,33 +0,0 @@
//@run-rustfix
#![allow(unused, clippy::useless_conversion)]
#![warn(clippy::explicit_into_iter_fn_arg)]
fn a<T>(_: T) {}
fn b<T: IntoIterator<Item = i32>>(_: T) {}
fn c(_: impl IntoIterator<Item = i32>) {}
fn d<T>(_: T)
where
T: IntoIterator<Item = i32>,
{
}
fn f(_: std::vec::IntoIter<i32>) {}
fn main() {
a(vec![1, 2].into_iter());
b(vec![1, 2]);
c(vec![1, 2]);
d(vec![1, 2]);
b([&1, &2, &3].into_iter().cloned());
// Don't lint chained `.into_iter().into_iter()` calls. Covered by useless_conversion.
b(vec![1, 2].into_iter().into_iter());
b(vec![1, 2].into_iter().into_iter().into_iter());
macro_rules! macro_generated {
() => {
vec![1, 2].into_iter()
};
}
b(macro_generated!());
}

View file

@ -1,33 +0,0 @@
//@run-rustfix
#![allow(unused, clippy::useless_conversion)]
#![warn(clippy::explicit_into_iter_fn_arg)]
fn a<T>(_: T) {}
fn b<T: IntoIterator<Item = i32>>(_: T) {}
fn c(_: impl IntoIterator<Item = i32>) {}
fn d<T>(_: T)
where
T: IntoIterator<Item = i32>,
{
}
fn f(_: std::vec::IntoIter<i32>) {}
fn main() {
a(vec![1, 2].into_iter());
b(vec![1, 2].into_iter());
c(vec![1, 2].into_iter());
d(vec![1, 2].into_iter());
b([&1, &2, &3].into_iter().cloned());
// Don't lint chained `.into_iter().into_iter()` calls. Covered by useless_conversion.
b(vec![1, 2].into_iter().into_iter());
b(vec![1, 2].into_iter().into_iter().into_iter());
macro_rules! macro_generated {
() => {
vec![1, 2].into_iter()
};
}
b(macro_generated!());
}

View file

@ -1,39 +0,0 @@
error: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
--> $DIR/explicit_into_iter_fn_arg.rs:18:7
|
LL | b(vec![1, 2].into_iter());
| ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2]`
|
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
--> $DIR/explicit_into_iter_fn_arg.rs:7:9
|
LL | fn b<T: IntoIterator<Item = i32>>(_: T) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^
= note: `-D clippy::explicit-into-iter-fn-arg` implied by `-D warnings`
error: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
--> $DIR/explicit_into_iter_fn_arg.rs:19:7
|
LL | c(vec![1, 2].into_iter());
| ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2]`
|
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
--> $DIR/explicit_into_iter_fn_arg.rs:8:14
|
LL | fn c(_: impl IntoIterator<Item = i32>) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
--> $DIR/explicit_into_iter_fn_arg.rs:20:7
|
LL | d(vec![1, 2].into_iter());
| ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2]`
|
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
--> $DIR/explicit_into_iter_fn_arg.rs:11:8
|
LL | T: IntoIterator<Item = i32>,
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 3 previous errors

View file

@ -155,6 +155,35 @@ fn main() {
let _ = vec![s4, s4, s4].into_iter();
}
#[allow(dead_code)]
fn explicit_into_iter_fn_arg() {
fn a<T>(_: T) {}
fn b<T: IntoIterator<Item = i32>>(_: T) {}
fn c(_: impl IntoIterator<Item = i32>) {}
fn d<T>(_: T)
where
T: IntoIterator<Item = i32>,
{
}
fn f(_: std::vec::IntoIter<i32>) {}
a(vec![1, 2].into_iter());
b(vec![1, 2]);
c(vec![1, 2]);
d(vec![1, 2]);
b([&1, &2, &3].into_iter().cloned());
b(vec![1, 2]);
b(vec![1, 2]);
macro_rules! macro_generated {
() => {
vec![1, 2].into_iter()
};
}
b(macro_generated!());
}
#[derive(Copy, Clone)]
struct Foo<const C: char>;

View file

@ -155,6 +155,35 @@ fn main() {
let _ = vec![s4, s4, s4].into_iter().into_iter();
}
#[allow(dead_code)]
fn explicit_into_iter_fn_arg() {
fn a<T>(_: T) {}
fn b<T: IntoIterator<Item = i32>>(_: T) {}
fn c(_: impl IntoIterator<Item = i32>) {}
fn d<T>(_: T)
where
T: IntoIterator<Item = i32>,
{
}
fn f(_: std::vec::IntoIter<i32>) {}
a(vec![1, 2].into_iter());
b(vec![1, 2].into_iter());
c(vec![1, 2].into_iter());
d(vec![1, 2].into_iter());
b([&1, &2, &3].into_iter().cloned());
b(vec![1, 2].into_iter().into_iter());
b(vec![1, 2].into_iter().into_iter().into_iter());
macro_rules! macro_generated {
() => {
vec![1, 2].into_iter()
};
}
b(macro_generated!());
}
#[derive(Copy, Clone)]
struct Foo<const C: char>;

View file

@ -118,5 +118,65 @@ error: useless conversion to the same type: `std::vec::IntoIter<Foo<'a'>>`
LL | let _ = vec![s4, s4, s4].into_iter().into_iter();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![s4, s4, s4].into_iter()`
error: aborting due to 19 previous errors
error: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
--> $DIR/useless_conversion.rs:171:7
|
LL | b(vec![1, 2].into_iter());
| ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2]`
|
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
--> $DIR/useless_conversion.rs:161:13
|
LL | fn b<T: IntoIterator<Item = i32>>(_: T) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
--> $DIR/useless_conversion.rs:172:7
|
LL | c(vec![1, 2].into_iter());
| ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2]`
|
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
--> $DIR/useless_conversion.rs:162:18
|
LL | fn c(_: impl IntoIterator<Item = i32>) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
--> $DIR/useless_conversion.rs:173:7
|
LL | d(vec![1, 2].into_iter());
| ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2]`
|
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
--> $DIR/useless_conversion.rs:165:12
|
LL | T: IntoIterator<Item = i32>,
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
--> $DIR/useless_conversion.rs:176:7
|
LL | b(vec![1, 2].into_iter().into_iter());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2]`
|
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
--> $DIR/useless_conversion.rs:161:13
|
LL | fn b<T: IntoIterator<Item = i32>>(_: T) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
--> $DIR/useless_conversion.rs:177:7
|
LL | b(vec![1, 2].into_iter().into_iter().into_iter());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2]`
|
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
--> $DIR/useless_conversion.rs:161:13
|
LL | fn b<T: IntoIterator<Item = i32>>(_: T) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 24 previous errors