summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/useless_conversion.fixed
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clippy/tests/ui/useless_conversion.fixed')
-rw-r--r--src/tools/clippy/tests/ui/useless_conversion.fixed45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/tools/clippy/tests/ui/useless_conversion.fixed b/src/tools/clippy/tests/ui/useless_conversion.fixed
index c16caa38f..53d8a5a9f 100644
--- a/src/tools/clippy/tests/ui/useless_conversion.fixed
+++ b/src/tools/clippy/tests/ui/useless_conversion.fixed
@@ -1,7 +1,7 @@
//@run-rustfix
#![deny(clippy::useless_conversion)]
-#![allow(clippy::unnecessary_wraps)]
+#![allow(clippy::needless_if, clippy::unnecessary_wraps)]
fn test_generic<T: Copy>(val: T) -> T {
let _ = val;
@@ -155,6 +155,49 @@ fn main() {
let _ = vec![s4, s4, s4].into_iter();
}
+#[allow(dead_code)]
+fn issue11065_fp() {
+ use std::option::IntoIter;
+ fn takes_into_iter(_: impl IntoIterator<Item = i32>) {}
+
+ macro_rules! x {
+ ($e:expr) => {
+ takes_into_iter($e);
+ let _: IntoIter<i32> = $e; // removing `.into_iter()` leads to a type error here
+ };
+ }
+ x!(Some(5).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>;