about summary refs log tree commit diff
diff options
context:
space:
mode:
authorflip1995 <hello@philkrones.com>2019-11-07 13:44:57 +0100
committerflip1995 <hello@philkrones.com>2019-11-07 14:04:29 +0100
commit08fd397c2c8db452692dc71ce7b4d3c47417ff09 (patch)
treea8cc1c95a1b4116125a0ceeda2d517276df1f9f0
parente917b012865d67f05e69da8d741f2be91f4e9a26 (diff)
downloadrust-08fd397c2c8db452692dc71ce7b4d3c47417ff09.tar.gz
rust-08fd397c2c8db452692dc71ce7b4d3c47417ff09.zip
Deprecate `into_iter_on_array` lint
This lint was uplifted/reimplemented by rustc.
Rustup to rust-lang/rust#66017
-rw-r--r--README.md2
-rw-r--r--clippy_lints/src/deprecated_lints.rs9
-rw-r--r--clippy_lints/src/lib.rs7
-rw-r--r--clippy_lints/src/methods/mod.rs45
-rw-r--r--src/lintlist/mod.rs9
-rw-r--r--tests/ui/deprecated.rs1
-rw-r--r--tests/ui/deprecated.stderr8
-rw-r--r--tests/ui/for_loop_fixable.fixed5
-rw-r--r--tests/ui/for_loop_fixable.rs5
-rw-r--r--tests/ui/for_loop_fixable.stderr26
-rw-r--r--tests/ui/for_loop_unfixable.rs2
-rw-r--r--tests/ui/into_iter_on_ref.fixed3
-rw-r--r--tests/ui/into_iter_on_ref.rs3
-rw-r--r--tests/ui/into_iter_on_ref.stderr72
14 files changed, 67 insertions, 130 deletions
diff --git a/README.md b/README.md
index 87ef441eadd..41b8b4199ec 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
 
 A collection of lints to catch common mistakes and improve your [Rust](https://github.com/rust-lang/rust) code.
 
-[There are 332 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)
+[There are 331 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)
 
 We have a bunch of lint categories to allow you to choose how much Clippy is supposed to ~~annoy~~ help you:
 
diff --git a/clippy_lints/src/deprecated_lints.rs b/clippy_lints/src/deprecated_lints.rs
index 97ae9c78088..2ac5dca8c2e 100644
--- a/clippy_lints/src/deprecated_lints.rs
+++ b/clippy_lints/src/deprecated_lints.rs
@@ -130,3 +130,12 @@ declare_deprecated_lint! {
     pub UNUSED_COLLECT,
     "`collect` has been marked as #[must_use] in rustc and that covers all cases of this lint"
 }
+
+declare_deprecated_lint! {
+    /// **What it does:** Nothing. This lint has been deprecated.
+    ///
+    /// **Deprecation reason:** This lint has been uplifted to rustc and is now called
+    /// `array_into_iter`.
+    pub INTO_ITER_ON_ARRAY,
+    "this lint has been uplifted to rustc and is now called `array_into_iter`"
+}
diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs
index 817575092cc..1bd117dae94 100644
--- a/clippy_lints/src/lib.rs
+++ b/clippy_lints/src/lib.rs
@@ -430,6 +430,10 @@ pub fn register_plugins(store: &mut lint::LintStore, sess: &Session, conf: &Conf
         "clippy::unused_collect",
         "`collect` has been marked as #[must_use] in rustc and that covers all cases of this lint",
     );
+    store.register_removed(
+        "clippy::into_iter_on_array",
+        "this lint has been uplifted to rustc and is now called `array_into_iter`",
+    );
     // end deprecated lints, do not remove this comment, it’s used in `update_lints`
 
     // begin register lints, do not remove this comment, it’s used in `update_lints`
@@ -584,7 +588,6 @@ pub fn register_plugins(store: &mut lint::LintStore, sess: &Session, conf: &Conf
         &methods::FLAT_MAP_IDENTITY,
         &methods::GET_UNWRAP,
         &methods::INEFFICIENT_TO_STRING,
-        &methods::INTO_ITER_ON_ARRAY,
         &methods::INTO_ITER_ON_REF,
         &methods::ITER_CLONED_COLLECT,
         &methods::ITER_NTH,
@@ -1142,7 +1145,6 @@ pub fn register_plugins(store: &mut lint::LintStore, sess: &Session, conf: &Conf
         LintId::of(&methods::FILTER_NEXT),
         LintId::of(&methods::FLAT_MAP_IDENTITY),
         LintId::of(&methods::INEFFICIENT_TO_STRING),
-        LintId::of(&methods::INTO_ITER_ON_ARRAY),
         LintId::of(&methods::INTO_ITER_ON_REF),
         LintId::of(&methods::ITER_CLONED_COLLECT),
         LintId::of(&methods::ITER_NTH),
@@ -1481,7 +1483,6 @@ pub fn register_plugins(store: &mut lint::LintStore, sess: &Session, conf: &Conf
         LintId::of(&mem_discriminant::MEM_DISCRIMINANT_NON_ENUM),
         LintId::of(&mem_replace::MEM_REPLACE_WITH_UNINIT),
         LintId::of(&methods::CLONE_DOUBLE_REF),
-        LintId::of(&methods::INTO_ITER_ON_ARRAY),
         LintId::of(&methods::TEMPORARY_CSTRING_AS_PTR),
         LintId::of(&methods::UNINIT_ASSUMED_INIT),
         LintId::of(&minmax::MIN_MAX),
diff --git a/clippy_lints/src/methods/mod.rs b/clippy_lints/src/methods/mod.rs
index db94d9dcdaf..c71324ea472 100644
--- a/clippy_lints/src/methods/mod.rs
+++ b/clippy_lints/src/methods/mod.rs
@@ -969,34 +969,6 @@ declare_clippy_lint! {
 }
 
 declare_clippy_lint! {
-    /// **What it does:** Checks for `into_iter` calls on types which should be replaced by `iter` or
-    /// `iter_mut`.
-    ///
-    /// **Why is this bad?** Arrays and `PathBuf` do not yet have an `into_iter` method which move out
-    /// their content into an iterator. Auto-referencing resolves the `into_iter` call to its reference
-    /// instead, like `<&[T; N] as IntoIterator>::into_iter`, which just iterates over item references
-    /// like calling `iter` would. Furthermore, when the standard library actually
-    /// [implements the `into_iter` method](https://github.com/rust-lang/rust/issues/25725) which moves
-    /// the content out of the array, the original use of `into_iter` got inferred with the wrong type
-    /// and the code will be broken.
-    ///
-    /// **Known problems:** None
-    ///
-    /// **Example:**
-    ///
-    /// ```rust
-    /// let _ = [1, 2, 3].into_iter().map(|x| *x).collect::<Vec<u32>>();
-    /// ```
-    /// Could be written as:
-    /// ```rust
-    /// let _ = [1, 2, 3].iter().map(|x| *x).collect::<Vec<u32>>();
-    /// ```
-    pub INTO_ITER_ON_ARRAY,
-    correctness,
-    "using `.into_iter()` on an array"
-}
-
-declare_clippy_lint! {
     /// **What it does:** Checks for `into_iter` calls on references which should be replaced by `iter`
     /// or `iter_mut`.
     ///
@@ -1133,7 +1105,6 @@ declare_lint_pass!(Methods => [
     USELESS_ASREF,
     UNNECESSARY_FOLD,
     UNNECESSARY_FILTER_MAP,
-    INTO_ITER_ON_ARRAY,
     INTO_ITER_ON_REF,
     SUSPICIOUS_MAP,
     UNINIT_ASSUMED_INIT,
@@ -2786,16 +2757,8 @@ fn lint_asref(cx: &LateContext<'_, '_>, expr: &hir::Expr, call_name: &str, as_re
     }
 }
 
-fn ty_has_iter_method(
-    cx: &LateContext<'_, '_>,
-    self_ref_ty: Ty<'_>,
-) -> Option<(&'static Lint, &'static str, &'static str)> {
+fn ty_has_iter_method(cx: &LateContext<'_, '_>, self_ref_ty: Ty<'_>) -> Option<(&'static str, &'static str)> {
     has_iter_method(cx, self_ref_ty).map(|ty_name| {
-        let lint = if ty_name == "array" || ty_name == "PathBuf" {
-            INTO_ITER_ON_ARRAY
-        } else {
-            INTO_ITER_ON_REF
-        };
         let mutbl = match self_ref_ty.kind {
             ty::Ref(_, _, mutbl) => mutbl,
             _ => unreachable!(),
@@ -2804,7 +2767,7 @@ fn ty_has_iter_method(
             hir::MutImmutable => "iter",
             hir::MutMutable => "iter_mut",
         };
-        (lint, ty_name, method_name)
+        (ty_name, method_name)
     })
 }
 
@@ -2812,10 +2775,10 @@ fn lint_into_iter(cx: &LateContext<'_, '_>, expr: &hir::Expr, self_ref_ty: Ty<'_
     if !match_trait_method(cx, expr, &paths::INTO_ITERATOR) {
         return;
     }
-    if let Some((lint, kind, method_name)) = ty_has_iter_method(cx, self_ref_ty) {
+    if let Some((kind, method_name)) = ty_has_iter_method(cx, self_ref_ty) {
         span_lint_and_sugg(
             cx,
-            lint,
+            INTO_ITER_ON_REF,
             method_span,
             &format!(
                 "this .into_iter() call is equivalent to .{}() and will not move the {}",
diff --git a/src/lintlist/mod.rs b/src/lintlist/mod.rs
index a053cf8bef0..35cbeae3988 100644
--- a/src/lintlist/mod.rs
+++ b/src/lintlist/mod.rs
@@ -6,7 +6,7 @@ pub use lint::Lint;
 pub use lint::LINT_LEVELS;
 
 // begin lint list, do not remove this comment, it’s used in `update_lints`
-pub const ALL_LINTS: [Lint; 332] = [
+pub const ALL_LINTS: [Lint; 331] = [
     Lint {
         name: "absurd_extreme_comparisons",
         group: "correctness",
@@ -813,13 +813,6 @@ pub const ALL_LINTS: [Lint; 332] = [
         module: "integer_division",
     },
     Lint {
-        name: "into_iter_on_array",
-        group: "correctness",
-        desc: "using `.into_iter()` on an array",
-        deprecation: None,
-        module: "methods",
-    },
-    Lint {
         name: "into_iter_on_ref",
         group: "style",
         desc: "using `.into_iter()` on a reference",
diff --git a/tests/ui/deprecated.rs b/tests/ui/deprecated.rs
index a928d044b7a..91d43758ab0 100644
--- a/tests/ui/deprecated.rs
+++ b/tests/ui/deprecated.rs
@@ -5,5 +5,6 @@
 #[warn(clippy::misaligned_transmute)]
 #[warn(clippy::unused_collect)]
 #[warn(clippy::invalid_ref)]
+#[warn(clippy::into_iter_on_array)]
 
 fn main() {}
diff --git a/tests/ui/deprecated.stderr b/tests/ui/deprecated.stderr
index 00ed4c5e51d..d353b26e537 100644
--- a/tests/ui/deprecated.stderr
+++ b/tests/ui/deprecated.stderr
@@ -42,11 +42,17 @@ error: lint `clippy::invalid_ref` has been removed: `superseded by rustc lint `i
 LL | #[warn(clippy::invalid_ref)]
    |        ^^^^^^^^^^^^^^^^^^^
 
+error: lint `clippy::into_iter_on_array` has been removed: `this lint has been uplifted to rustc and is now called `array_into_iter``
+  --> $DIR/deprecated.rs:8:8
+   |
+LL | #[warn(clippy::into_iter_on_array)]
+   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
 error: lint `clippy::str_to_string` has been removed: `using `str::to_string` is common even today and specialization will likely happen soon`
   --> $DIR/deprecated.rs:1:8
    |
 LL | #[warn(clippy::str_to_string)]
    |        ^^^^^^^^^^^^^^^^^^^^^
 
-error: aborting due to 8 previous errors
+error: aborting due to 9 previous errors
 
diff --git a/tests/ui/for_loop_fixable.fixed b/tests/ui/for_loop_fixable.fixed
index 3075638ef94..ec5ff1aeeef 100644
--- a/tests/ui/for_loop_fixable.fixed
+++ b/tests/ui/for_loop_fixable.fixed
@@ -31,7 +31,7 @@ impl Unrelated {
     clippy::cognitive_complexity,
     clippy::similar_names
 )]
-#[allow(clippy::many_single_char_names, unused_variables, clippy::into_iter_on_array)]
+#[allow(clippy::many_single_char_names, unused_variables)]
 fn main() {
     const MAX_LEN: usize = 42;
     let mut vec = vec![1, 2, 3, 4];
@@ -102,9 +102,6 @@ fn main() {
     let out_vec = vec![1, 2, 3];
     for _v in out_vec {}
 
-    let array = [1, 2, 3];
-    for _v in &array {}
-
     for _v in &vec {} // these are fine
     for _v in &mut vec {} // these are fine
 
diff --git a/tests/ui/for_loop_fixable.rs b/tests/ui/for_loop_fixable.rs
index 2201596fd6a..2f42ea3ca41 100644
--- a/tests/ui/for_loop_fixable.rs
+++ b/tests/ui/for_loop_fixable.rs
@@ -31,7 +31,7 @@ impl Unrelated {
     clippy::cognitive_complexity,
     clippy::similar_names
 )]
-#[allow(clippy::many_single_char_names, unused_variables, clippy::into_iter_on_array)]
+#[allow(clippy::many_single_char_names, unused_variables)]
 fn main() {
     const MAX_LEN: usize = 42;
     let mut vec = vec![1, 2, 3, 4];
@@ -102,9 +102,6 @@ fn main() {
     let out_vec = vec![1, 2, 3];
     for _v in out_vec.into_iter() {}
 
-    let array = [1, 2, 3];
-    for _v in array.into_iter() {}
-
     for _v in &vec {} // these are fine
     for _v in &mut vec {} // these are fine
 
diff --git a/tests/ui/for_loop_fixable.stderr b/tests/ui/for_loop_fixable.stderr
index 7454f40f3e2..485ba1ee7b3 100644
--- a/tests/ui/for_loop_fixable.stderr
+++ b/tests/ui/for_loop_fixable.stderr
@@ -77,64 +77,58 @@ LL |     for _v in out_vec.into_iter() {}
    = note: `-D clippy::explicit-into-iter-loop` implied by `-D warnings`
 
 error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:106:15
-   |
-LL |     for _v in array.into_iter() {}
-   |               ^^^^^^^^^^^^^^^^^ help: to write this more concisely, try: `&array`
-
-error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:111:15
+  --> $DIR/for_loop_fixable.rs:108:15
    |
 LL |     for _v in [1, 2, 3].iter() {}
    |               ^^^^^^^^^^^^^^^^ help: to write this more concisely, try: `&[1, 2, 3]`
 
 error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:115:15
+  --> $DIR/for_loop_fixable.rs:112:15
    |
 LL |     for _v in [0; 32].iter() {}
    |               ^^^^^^^^^^^^^^ help: to write this more concisely, try: `&[0; 32]`
 
 error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:120:15
+  --> $DIR/for_loop_fixable.rs:117:15
    |
 LL |     for _v in ll.iter() {}
    |               ^^^^^^^^^ help: to write this more concisely, try: `&ll`
 
 error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:123:15
+  --> $DIR/for_loop_fixable.rs:120:15
    |
 LL |     for _v in vd.iter() {}
    |               ^^^^^^^^^ help: to write this more concisely, try: `&vd`
 
 error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:126:15
+  --> $DIR/for_loop_fixable.rs:123:15
    |
 LL |     for _v in bh.iter() {}
    |               ^^^^^^^^^ help: to write this more concisely, try: `&bh`
 
 error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:129:15
+  --> $DIR/for_loop_fixable.rs:126:15
    |
 LL |     for _v in hm.iter() {}
    |               ^^^^^^^^^ help: to write this more concisely, try: `&hm`
 
 error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:132:15
+  --> $DIR/for_loop_fixable.rs:129:15
    |
 LL |     for _v in bt.iter() {}
    |               ^^^^^^^^^ help: to write this more concisely, try: `&bt`
 
 error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:135:15
+  --> $DIR/for_loop_fixable.rs:132:15
    |
 LL |     for _v in hs.iter() {}
    |               ^^^^^^^^^ help: to write this more concisely, try: `&hs`
 
 error: it is more concise to loop over references to containers instead of using explicit iteration methods
-  --> $DIR/for_loop_fixable.rs:138:15
+  --> $DIR/for_loop_fixable.rs:135:15
    |
 LL |     for _v in bs.iter() {}
    |               ^^^^^^^^^ help: to write this more concisely, try: `&bs`
 
-error: aborting due to 18 previous errors
+error: aborting due to 17 previous errors
 
diff --git a/tests/ui/for_loop_unfixable.rs b/tests/ui/for_loop_unfixable.rs
index 5d94647e0db..20a93a22282 100644
--- a/tests/ui/for_loop_unfixable.rs
+++ b/tests/ui/for_loop_unfixable.rs
@@ -17,7 +17,7 @@
     unused,
     dead_code
 )]
-#[allow(clippy::many_single_char_names, unused_variables, clippy::into_iter_on_array)]
+#[allow(clippy::many_single_char_names, unused_variables)]
 fn main() {
     for i in 5..5 {
         println!("{}", i);
diff --git a/tests/ui/into_iter_on_ref.fixed b/tests/ui/into_iter_on_ref.fixed
index f5342be631b..c30d23de3f8 100644
--- a/tests/ui/into_iter_on_ref.fixed
+++ b/tests/ui/into_iter_on_ref.fixed
@@ -1,7 +1,6 @@
 // run-rustfix
 #![allow(clippy::useless_vec)]
 #![warn(clippy::into_iter_on_ref)]
-#![deny(clippy::into_iter_on_array)]
 
 struct X;
 use std::collections::*;
@@ -10,9 +9,7 @@ fn main() {
     for _ in &[1, 2, 3] {}
     for _ in vec![X, X] {}
     for _ in &vec![X, X] {}
-    for _ in [1, 2, 3].iter() {} //~ ERROR equivalent to .iter()
 
-    let _ = [1, 2, 3].iter(); //~ ERROR equivalent to .iter()
     let _ = vec![1, 2, 3].into_iter();
     let _ = (&vec![1, 2, 3]).iter(); //~ WARN equivalent to .iter()
     let _ = vec![1, 2, 3].into_boxed_slice().iter(); //~ WARN equivalent to .iter()
diff --git a/tests/ui/into_iter_on_ref.rs b/tests/ui/into_iter_on_ref.rs
index 5ec64dcf733..94bc1689619 100644
--- a/tests/ui/into_iter_on_ref.rs
+++ b/tests/ui/into_iter_on_ref.rs
@@ -1,7 +1,6 @@
 // run-rustfix
 #![allow(clippy::useless_vec)]
 #![warn(clippy::into_iter_on_ref)]
-#![deny(clippy::into_iter_on_array)]
 
 struct X;
 use std::collections::*;
@@ -10,9 +9,7 @@ fn main() {
     for _ in &[1, 2, 3] {}
     for _ in vec![X, X] {}
     for _ in &vec![X, X] {}
-    for _ in [1, 2, 3].into_iter() {} //~ ERROR equivalent to .iter()
 
-    let _ = [1, 2, 3].into_iter(); //~ ERROR equivalent to .iter()
     let _ = vec![1, 2, 3].into_iter();
     let _ = (&vec![1, 2, 3]).into_iter(); //~ WARN equivalent to .iter()
     let _ = vec![1, 2, 3].into_boxed_slice().into_iter(); //~ WARN equivalent to .iter()
diff --git a/tests/ui/into_iter_on_ref.stderr b/tests/ui/into_iter_on_ref.stderr
index 931e4880f93..a5be50f6405 100644
--- a/tests/ui/into_iter_on_ref.stderr
+++ b/tests/ui/into_iter_on_ref.stderr
@@ -1,23 +1,5 @@
-error: this .into_iter() call is equivalent to .iter() and will not move the array
-  --> $DIR/into_iter_on_ref.rs:13:24
-   |
-LL |     for _ in [1, 2, 3].into_iter() {} //~ ERROR equivalent to .iter()
-   |                        ^^^^^^^^^ help: call directly: `iter`
-   |
-note: lint level defined here
-  --> $DIR/into_iter_on_ref.rs:4:9
-   |
-LL | #![deny(clippy::into_iter_on_array)]
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: this .into_iter() call is equivalent to .iter() and will not move the array
-  --> $DIR/into_iter_on_ref.rs:15:23
-   |
-LL |     let _ = [1, 2, 3].into_iter(); //~ ERROR equivalent to .iter()
-   |                       ^^^^^^^^^ help: call directly: `iter`
-
 error: this .into_iter() call is equivalent to .iter() and will not move the Vec
-  --> $DIR/into_iter_on_ref.rs:17:30
+  --> $DIR/into_iter_on_ref.rs:14:30
    |
 LL |     let _ = (&vec![1, 2, 3]).into_iter(); //~ WARN equivalent to .iter()
    |                              ^^^^^^^^^ help: call directly: `iter`
@@ -25,154 +7,154 @@ LL |     let _ = (&vec![1, 2, 3]).into_iter(); //~ WARN equivalent to .iter()
    = note: `-D clippy::into-iter-on-ref` implied by `-D warnings`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the slice
-  --> $DIR/into_iter_on_ref.rs:18:46
+  --> $DIR/into_iter_on_ref.rs:15:46
    |
 LL |     let _ = vec![1, 2, 3].into_boxed_slice().into_iter(); //~ WARN equivalent to .iter()
    |                                              ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the slice
-  --> $DIR/into_iter_on_ref.rs:19:41
+  --> $DIR/into_iter_on_ref.rs:16:41
    |
 LL |     let _ = std::rc::Rc::from(&[X][..]).into_iter(); //~ WARN equivalent to .iter()
    |                                         ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the slice
-  --> $DIR/into_iter_on_ref.rs:20:44
+  --> $DIR/into_iter_on_ref.rs:17:44
    |
 LL |     let _ = std::sync::Arc::from(&[X][..]).into_iter(); //~ WARN equivalent to .iter()
    |                                            ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the array
-  --> $DIR/into_iter_on_ref.rs:22:32
+  --> $DIR/into_iter_on_ref.rs:19:32
    |
 LL |     let _ = (&&&&&&&[1, 2, 3]).into_iter(); //~ ERROR equivalent to .iter()
    |                                ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the array
-  --> $DIR/into_iter_on_ref.rs:23:36
+  --> $DIR/into_iter_on_ref.rs:20:36
    |
 LL |     let _ = (&&&&mut &&&[1, 2, 3]).into_iter(); //~ ERROR equivalent to .iter()
    |                                    ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter_mut() and will not move the array
-  --> $DIR/into_iter_on_ref.rs:24:40
+  --> $DIR/into_iter_on_ref.rs:21:40
    |
 LL |     let _ = (&mut &mut &mut [1, 2, 3]).into_iter(); //~ ERROR equivalent to .iter_mut()
    |                                        ^^^^^^^^^ help: call directly: `iter_mut`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the Option
-  --> $DIR/into_iter_on_ref.rs:26:24
+  --> $DIR/into_iter_on_ref.rs:23:24
    |
 LL |     let _ = (&Some(4)).into_iter(); //~ WARN equivalent to .iter()
    |                        ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter_mut() and will not move the Option
-  --> $DIR/into_iter_on_ref.rs:27:28
+  --> $DIR/into_iter_on_ref.rs:24:28
    |
 LL |     let _ = (&mut Some(5)).into_iter(); //~ WARN equivalent to .iter_mut()
    |                            ^^^^^^^^^ help: call directly: `iter_mut`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the Result
-  --> $DIR/into_iter_on_ref.rs:28:32
+  --> $DIR/into_iter_on_ref.rs:25:32
    |
 LL |     let _ = (&Ok::<_, i32>(6)).into_iter(); //~ WARN equivalent to .iter()
    |                                ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter_mut() and will not move the Result
-  --> $DIR/into_iter_on_ref.rs:29:37
+  --> $DIR/into_iter_on_ref.rs:26:37
    |
 LL |     let _ = (&mut Err::<i32, _>(7)).into_iter(); //~ WARN equivalent to .iter_mut()
    |                                     ^^^^^^^^^ help: call directly: `iter_mut`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the Vec
-  --> $DIR/into_iter_on_ref.rs:30:34
+  --> $DIR/into_iter_on_ref.rs:27:34
    |
 LL |     let _ = (&Vec::<i32>::new()).into_iter(); //~ WARN equivalent to .iter()
    |                                  ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter_mut() and will not move the Vec
-  --> $DIR/into_iter_on_ref.rs:31:38
+  --> $DIR/into_iter_on_ref.rs:28:38
    |
 LL |     let _ = (&mut Vec::<i32>::new()).into_iter(); //~ WARN equivalent to .iter_mut()
    |                                      ^^^^^^^^^ help: call directly: `iter_mut`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the BTreeMap
-  --> $DIR/into_iter_on_ref.rs:32:44
+  --> $DIR/into_iter_on_ref.rs:29:44
    |
 LL |     let _ = (&BTreeMap::<i32, u64>::new()).into_iter(); //~ WARN equivalent to .iter()
    |                                            ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter_mut() and will not move the BTreeMap
-  --> $DIR/into_iter_on_ref.rs:33:48
+  --> $DIR/into_iter_on_ref.rs:30:48
    |
 LL |     let _ = (&mut BTreeMap::<i32, u64>::new()).into_iter(); //~ WARN equivalent to .iter_mut()
    |                                                ^^^^^^^^^ help: call directly: `iter_mut`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the VecDeque
-  --> $DIR/into_iter_on_ref.rs:34:39
+  --> $DIR/into_iter_on_ref.rs:31:39
    |
 LL |     let _ = (&VecDeque::<i32>::new()).into_iter(); //~ WARN equivalent to .iter()
    |                                       ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter_mut() and will not move the VecDeque
-  --> $DIR/into_iter_on_ref.rs:35:43
+  --> $DIR/into_iter_on_ref.rs:32:43
    |
 LL |     let _ = (&mut VecDeque::<i32>::new()).into_iter(); //~ WARN equivalent to .iter_mut()
    |                                           ^^^^^^^^^ help: call directly: `iter_mut`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the LinkedList
-  --> $DIR/into_iter_on_ref.rs:36:41
+  --> $DIR/into_iter_on_ref.rs:33:41
    |
 LL |     let _ = (&LinkedList::<i32>::new()).into_iter(); //~ WARN equivalent to .iter()
    |                                         ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter_mut() and will not move the LinkedList
-  --> $DIR/into_iter_on_ref.rs:37:45
+  --> $DIR/into_iter_on_ref.rs:34:45
    |
 LL |     let _ = (&mut LinkedList::<i32>::new()).into_iter(); //~ WARN equivalent to .iter_mut()
    |                                             ^^^^^^^^^ help: call directly: `iter_mut`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the HashMap
-  --> $DIR/into_iter_on_ref.rs:38:43
+  --> $DIR/into_iter_on_ref.rs:35:43
    |
 LL |     let _ = (&HashMap::<i32, u64>::new()).into_iter(); //~ WARN equivalent to .iter()
    |                                           ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter_mut() and will not move the HashMap
-  --> $DIR/into_iter_on_ref.rs:39:47
+  --> $DIR/into_iter_on_ref.rs:36:47
    |
 LL |     let _ = (&mut HashMap::<i32, u64>::new()).into_iter(); //~ WARN equivalent to .iter_mut()
    |                                               ^^^^^^^^^ help: call directly: `iter_mut`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the BTreeSet
-  --> $DIR/into_iter_on_ref.rs:41:39
+  --> $DIR/into_iter_on_ref.rs:38:39
    |
 LL |     let _ = (&BTreeSet::<i32>::new()).into_iter(); //~ WARN equivalent to .iter()
    |                                       ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the BinaryHeap
-  --> $DIR/into_iter_on_ref.rs:42:41
+  --> $DIR/into_iter_on_ref.rs:39:41
    |
 LL |     let _ = (&BinaryHeap::<i32>::new()).into_iter(); //~ WARN equivalent to .iter()
    |                                         ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the HashSet
-  --> $DIR/into_iter_on_ref.rs:43:38
+  --> $DIR/into_iter_on_ref.rs:40:38
    |
 LL |     let _ = (&HashSet::<i32>::new()).into_iter(); //~ WARN equivalent to .iter()
    |                                      ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the Path
-  --> $DIR/into_iter_on_ref.rs:44:43
+  --> $DIR/into_iter_on_ref.rs:41:43
    |
 LL |     let _ = std::path::Path::new("12/34").into_iter(); //~ WARN equivalent to .iter()
    |                                           ^^^^^^^^^ help: call directly: `iter`
 
 error: this .into_iter() call is equivalent to .iter() and will not move the PathBuf
-  --> $DIR/into_iter_on_ref.rs:45:47
+  --> $DIR/into_iter_on_ref.rs:42:47
    |
 LL |     let _ = std::path::PathBuf::from("12/34").into_iter(); //~ ERROR equivalent to .iter()
    |                                               ^^^^^^^^^ help: call directly: `iter`
 
-error: aborting due to 28 previous errors
+error: aborting due to 26 previous errors