From e55b920970fdc33f5ddaf7757738fbacdadf15ab Mon Sep 17 00:00:00 2001
From: ThibsG <Thibs@debian.com>
Date: Mon, 4 May 2020 17:09:02 +0200
Subject: [PATCH] Rename lint `identity_conversion` to `useless_conversion`

---
 CHANGELOG.md                                  |  4 +-
 clippy_lints/src/lib.rs                       | 11 +++--
 ...ty_conversion.rs => useless_conversion.rs} | 30 +++++++-----
 src/lintlist/mod.rs                           | 14 +++---
 ...version.fixed => useless_conversion.fixed} |  4 +-
 ...ty_conversion.rs => useless_conversion.rs} |  4 +-
 ...rsion.stderr => useless_conversion.stderr} | 46 +++++++++----------
 7 files changed, 60 insertions(+), 53 deletions(-)
 rename clippy_lints/src/{identity_conversion.rs => useless_conversion.rs} (84%)
 rename tests/ui/{identity_conversion.fixed => useless_conversion.fixed} (93%)
 rename tests/ui/{identity_conversion.rs => useless_conversion.rs} (94%)
 rename tests/ui/{identity_conversion.stderr => useless_conversion.stderr} (67%)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index d05819a973a..9e85e6da3b9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -805,7 +805,7 @@ Released 2018-09-13
 
 ## 0.0.166
 * Rustup to *rustc 1.22.0-nightly (b7960878b 2017-10-18)*
-* New lints: [`explicit_write`], [`identity_conversion`], [`implicit_hasher`], [`invalid_ref`], [`option_map_or_none`],
+* New lints: [`explicit_write`], `identity_conversion`, [`implicit_hasher`], [`invalid_ref`], [`option_map_or_none`],
   [`range_minus_one`], [`range_plus_one`], [`transmute_int_to_bool`], [`transmute_int_to_char`],
   [`transmute_int_to_float`]
 
@@ -1367,7 +1367,6 @@ Released 2018-09-13
 [`future_not_send`]: https://rust-lang.github.io/rust-clippy/master/index.html#future_not_send
 [`get_last_with_len`]: https://rust-lang.github.io/rust-clippy/master/index.html#get_last_with_len
 [`get_unwrap`]: https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap
-[`identity_conversion`]: https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion
 [`identity_op`]: https://rust-lang.github.io/rust-clippy/master/index.html#identity_op
 [`if_let_mutex`]: https://rust-lang.github.io/rust-clippy/master/index.html#if_let_mutex
 [`if_let_redundant_pattern_matching`]: https://rust-lang.github.io/rust-clippy/master/index.html#if_let_redundant_pattern_matching
@@ -1624,6 +1623,7 @@ Released 2018-09-13
 [`used_underscore_binding`]: https://rust-lang.github.io/rust-clippy/master/index.html#used_underscore_binding
 [`useless_asref`]: https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref
 [`useless_attribute`]: https://rust-lang.github.io/rust-clippy/master/index.html#useless_attribute
+[`useless_conversion`]: https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
 [`useless_format`]: https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
 [`useless_let_if_seq`]: https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq
 [`useless_transmute`]: https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute
diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs
index bda0d5c0458..4dda373738b 100644
--- a/clippy_lints/src/lib.rs
+++ b/clippy_lints/src/lib.rs
@@ -221,7 +221,6 @@ mod formatting;
 mod functions;
 mod future_not_send;
 mod get_last_with_len;
-mod identity_conversion;
 mod identity_op;
 mod if_let_mutex;
 mod if_let_some_result;
@@ -324,6 +323,7 @@ mod unused_io_amount;
 mod unused_self;
 mod unwrap;
 mod use_self;
+mod useless_conversion;
 mod vec;
 mod verbose_file_reads;
 mod wildcard_dependencies;
@@ -577,7 +577,6 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
         &functions::TOO_MANY_LINES,
         &future_not_send::FUTURE_NOT_SEND,
         &get_last_with_len::GET_LAST_WITH_LEN,
-        &identity_conversion::IDENTITY_CONVERSION,
         &identity_op::IDENTITY_OP,
         &if_let_mutex::IF_LET_MUTEX,
         &if_let_some_result::IF_LET_SOME_RESULT,
@@ -843,6 +842,7 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
         &unwrap::PANICKING_UNWRAP,
         &unwrap::UNNECESSARY_UNWRAP,
         &use_self::USE_SELF,
+        &useless_conversion::USELESS_CONVERSION,
         &utils::internal_lints::CLIPPY_LINTS_INTERNAL,
         &utils::internal_lints::COLLAPSIBLE_SPAN_LINT_CALLS,
         &utils::internal_lints::COMPILER_LINT_FUNCTIONS,
@@ -980,7 +980,7 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
     store.register_late_pass(|| box bytecount::ByteCount);
     store.register_late_pass(|| box infinite_iter::InfiniteIter);
     store.register_late_pass(|| box inline_fn_without_body::InlineFnWithoutBody);
-    store.register_late_pass(|| box identity_conversion::IdentityConversion::default());
+    store.register_late_pass(|| box useless_conversion::UselessConversion::default());
     store.register_late_pass(|| box types::ImplicitHasher);
     store.register_late_pass(|| box fallible_impl_from::FallibleImplFrom);
     store.register_late_pass(|| box types::UnitArg);
@@ -1241,7 +1241,6 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
         LintId::of(&functions::NOT_UNSAFE_PTR_ARG_DEREF),
         LintId::of(&functions::TOO_MANY_ARGUMENTS),
         LintId::of(&get_last_with_len::GET_LAST_WITH_LEN),
-        LintId::of(&identity_conversion::IDENTITY_CONVERSION),
         LintId::of(&identity_op::IDENTITY_OP),
         LintId::of(&if_let_mutex::IF_LET_MUTEX),
         LintId::of(&if_let_some_result::IF_LET_SOME_RESULT),
@@ -1427,6 +1426,7 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
         LintId::of(&unused_io_amount::UNUSED_IO_AMOUNT),
         LintId::of(&unwrap::PANICKING_UNWRAP),
         LintId::of(&unwrap::UNNECESSARY_UNWRAP),
+        LintId::of(&useless_conversion::USELESS_CONVERSION),
         LintId::of(&vec::USELESS_VEC),
         LintId::of(&write::PRINTLN_EMPTY_STRING),
         LintId::of(&write::PRINT_LITERAL),
@@ -1546,7 +1546,6 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
         LintId::of(&format::USELESS_FORMAT),
         LintId::of(&functions::TOO_MANY_ARGUMENTS),
         LintId::of(&get_last_with_len::GET_LAST_WITH_LEN),
-        LintId::of(&identity_conversion::IDENTITY_CONVERSION),
         LintId::of(&identity_op::IDENTITY_OP),
         LintId::of(&int_plus_one::INT_PLUS_ONE),
         LintId::of(&lifetimes::EXTRA_UNUSED_LIFETIMES),
@@ -1605,6 +1604,7 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
         LintId::of(&types::UNNECESSARY_CAST),
         LintId::of(&types::VEC_BOX),
         LintId::of(&unwrap::UNNECESSARY_UNWRAP),
+        LintId::of(&useless_conversion::USELESS_CONVERSION),
         LintId::of(&zero_div_zero::ZERO_DIVIDED_BY_ZERO),
     ]);
 
@@ -1795,6 +1795,7 @@ pub fn register_renamed(ls: &mut rustc_lint::LintStore) {
     ls.register_renamed("clippy::result_expect_used", "clippy::expect_used");
     ls.register_renamed("clippy::for_loop_over_option", "clippy::for_loops_over_fallibles");
     ls.register_renamed("clippy::for_loop_over_result", "clippy::for_loops_over_fallibles");
+    ls.register_renamed("clippy::identity_conversion", "clippy::useless_conversion");
 }
 
 // only exists to let the dogfood integration test works.
diff --git a/clippy_lints/src/identity_conversion.rs b/clippy_lints/src/useless_conversion.rs
similarity index 84%
rename from clippy_lints/src/identity_conversion.rs
rename to clippy_lints/src/useless_conversion.rs
index 33a9478f058..95921518986 100644
--- a/clippy_lints/src/identity_conversion.rs
+++ b/clippy_lints/src/useless_conversion.rs
@@ -7,30 +7,36 @@ use rustc_lint::{LateContext, LateLintPass};
 use rustc_session::{declare_tool_lint, impl_lint_pass};
 
 declare_clippy_lint! {
-    /// **What it does:** Checks for always-identical `Into`/`From`/`IntoIter` conversions.
+    /// **What it does:** Checks for `Into`/`From`/`IntoIter` calls that useless converts
+    /// to the same type as caller.
     ///
     /// **Why is this bad?** Redundant code.
     ///
     /// **Known problems:** None.
     ///
     /// **Example:**
+    ///
     /// ```rust
+    /// // Bad
     /// // format!() returns a `String`
     /// let s: String = format!("hello").into();
+    ///
+    /// // Good
+    /// let s: String = format!("hello");
     /// ```
-    pub IDENTITY_CONVERSION,
+    pub USELESS_CONVERSION,
     complexity,
-    "using always-identical `Into`/`From`/`IntoIter` conversions"
+    "calls to `Into`/`From`/`IntoIter` that performs useless conversions to the same type"
 }
 
 #[derive(Default)]
-pub struct IdentityConversion {
+pub struct UselessConversion {
     try_desugar_arm: Vec<HirId>,
 }
 
-impl_lint_pass!(IdentityConversion => [IDENTITY_CONVERSION]);
+impl_lint_pass!(UselessConversion => [USELESS_CONVERSION]);
 
-impl<'a, 'tcx> LateLintPass<'a, 'tcx> for IdentityConversion {
+impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UselessConversion {
     fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, e: &'tcx Expr<'_>) {
         if e.span.from_expansion() {
             return;
@@ -60,9 +66,9 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for IdentityConversion {
 
                         span_lint_and_sugg(
                             cx,
-                            IDENTITY_CONVERSION,
+                            USELESS_CONVERSION,
                             e.span,
-                            "identical conversion",
+                            "useless conversion",
                             "consider removing `.into()`",
                             sugg,
                             Applicability::MachineApplicable, // snippet
@@ -76,9 +82,9 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for IdentityConversion {
                         let sugg = snippet(cx, args[0].span, "<expr>").into_owned();
                         span_lint_and_sugg(
                             cx,
-                            IDENTITY_CONVERSION,
+                            USELESS_CONVERSION,
                             e.span,
-                            "identical conversion",
+                            "useless conversion",
                             "consider removing `.into_iter()`",
                             sugg,
                             Applicability::MachineApplicable, // snippet
@@ -99,9 +105,9 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for IdentityConversion {
                                     format!("consider removing `{}()`", snippet(cx, path.span, "From::from"));
                                 span_lint_and_sugg(
                                     cx,
-                                    IDENTITY_CONVERSION,
+                                    USELESS_CONVERSION,
                                     e.span,
-                                    "identical conversion",
+                                    "useless conversion",
                                     &sugg_msg,
                                     sugg,
                                     Applicability::MachineApplicable, // snippet
diff --git a/src/lintlist/mod.rs b/src/lintlist/mod.rs
index e5e3bf453a0..e411e60782a 100644
--- a/src/lintlist/mod.rs
+++ b/src/lintlist/mod.rs
@@ -717,13 +717,6 @@ pub static ref ALL_LINTS: Vec<Lint> = vec![
         deprecation: None,
         module: "methods",
     },
-    Lint {
-        name: "identity_conversion",
-        group: "complexity",
-        desc: "using always-identical `Into`/`From`/`IntoIter` conversions",
-        deprecation: None,
-        module: "identity_conversion",
-    },
     Lint {
         name: "identity_op",
         group: "complexity",
@@ -2418,6 +2411,13 @@ pub static ref ALL_LINTS: Vec<Lint> = vec![
         deprecation: None,
         module: "attrs",
     },
+    Lint {
+        name: "useless_conversion",
+        group: "complexity",
+        desc: "calls to `Into`/`From`/`IntoIter` that performs useless conversions to the same type",
+        deprecation: None,
+        module: "useless_conversion",
+    },
     Lint {
         name: "useless_format",
         group: "complexity",
diff --git a/tests/ui/identity_conversion.fixed b/tests/ui/useless_conversion.fixed
similarity index 93%
rename from tests/ui/identity_conversion.fixed
rename to tests/ui/useless_conversion.fixed
index dd3fc56e98b..fdd4bc581f3 100644
--- a/tests/ui/identity_conversion.fixed
+++ b/tests/ui/useless_conversion.fixed
@@ -1,6 +1,6 @@
 // run-rustfix
 
-#![deny(clippy::identity_conversion)]
+#![deny(clippy::useless_conversion)]
 
 fn test_generic<T: Copy>(val: T) -> T {
     let _ = val;
@@ -41,7 +41,7 @@ fn main() {
     let _: String = "foo".into();
     let _: String = From::from("foo");
     let _ = String::from("foo");
-    #[allow(clippy::identity_conversion)]
+    #[allow(clippy::useless_conversion)]
     {
         let _: String = "foo".into();
         let _ = String::from("foo");
diff --git a/tests/ui/identity_conversion.rs b/tests/ui/useless_conversion.rs
similarity index 94%
rename from tests/ui/identity_conversion.rs
rename to tests/ui/useless_conversion.rs
index 875ed7db373..4cae745e7c0 100644
--- a/tests/ui/identity_conversion.rs
+++ b/tests/ui/useless_conversion.rs
@@ -1,6 +1,6 @@
 // run-rustfix
 
-#![deny(clippy::identity_conversion)]
+#![deny(clippy::useless_conversion)]
 
 fn test_generic<T: Copy>(val: T) -> T {
     let _ = T::from(val);
@@ -41,7 +41,7 @@ fn main() {
     let _: String = "foo".into();
     let _: String = From::from("foo");
     let _ = String::from("foo");
-    #[allow(clippy::identity_conversion)]
+    #[allow(clippy::useless_conversion)]
     {
         let _: String = "foo".into();
         let _ = String::from("foo");
diff --git a/tests/ui/identity_conversion.stderr b/tests/ui/useless_conversion.stderr
similarity index 67%
rename from tests/ui/identity_conversion.stderr
rename to tests/ui/useless_conversion.stderr
index 57626b23795..7df3507edfd 100644
--- a/tests/ui/identity_conversion.stderr
+++ b/tests/ui/useless_conversion.stderr
@@ -1,65 +1,65 @@
-error: identical conversion
-  --> $DIR/identity_conversion.rs:6:13
+error: useless conversion
+  --> $DIR/useless_conversion.rs:6:13
    |
 LL |     let _ = T::from(val);
    |             ^^^^^^^^^^^^ help: consider removing `T::from()`: `val`
    |
 note: the lint level is defined here
-  --> $DIR/identity_conversion.rs:3:9
+  --> $DIR/useless_conversion.rs:3:9
    |
-LL | #![deny(clippy::identity_conversion)]
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LL | #![deny(clippy::useless_conversion)]
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error: identical conversion
-  --> $DIR/identity_conversion.rs:7:5
+error: useless conversion
+  --> $DIR/useless_conversion.rs:7:5
    |
 LL |     val.into()
    |     ^^^^^^^^^^ help: consider removing `.into()`: `val`
 
-error: identical conversion
-  --> $DIR/identity_conversion.rs:19:22
+error: useless conversion
+  --> $DIR/useless_conversion.rs:19:22
    |
 LL |         let _: i32 = 0i32.into();
    |                      ^^^^^^^^^^^ help: consider removing `.into()`: `0i32`
 
-error: identical conversion
-  --> $DIR/identity_conversion.rs:51:21
+error: useless conversion
+  --> $DIR/useless_conversion.rs:51:21
    |
 LL |     let _: String = "foo".to_string().into();
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `"foo".to_string()`
 
-error: identical conversion
-  --> $DIR/identity_conversion.rs:52:21
+error: useless conversion
+  --> $DIR/useless_conversion.rs:52:21
    |
 LL |     let _: String = From::from("foo".to_string());
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `From::from()`: `"foo".to_string()`
 
-error: identical conversion
-  --> $DIR/identity_conversion.rs:53:13
+error: useless conversion
+  --> $DIR/useless_conversion.rs:53:13
    |
 LL |     let _ = String::from("foo".to_string());
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `"foo".to_string()`
 
-error: identical conversion
-  --> $DIR/identity_conversion.rs:54:13
+error: useless conversion
+  --> $DIR/useless_conversion.rs:54:13
    |
 LL |     let _ = String::from(format!("A: {:04}", 123));
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("A: {:04}", 123)`
 
-error: identical conversion
-  --> $DIR/identity_conversion.rs:55:13
+error: useless conversion
+  --> $DIR/useless_conversion.rs:55:13
    |
 LL |     let _ = "".lines().into_iter();
    |             ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `"".lines()`
 
-error: identical conversion
-  --> $DIR/identity_conversion.rs:56:13
+error: useless conversion
+  --> $DIR/useless_conversion.rs:56:13
    |
 LL |     let _ = vec![1, 2, 3].into_iter().into_iter();
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2, 3].into_iter()`
 
-error: identical conversion
-  --> $DIR/identity_conversion.rs:57:21
+error: useless conversion
+  --> $DIR/useless_conversion.rs:57:21
    |
 LL |     let _: String = format!("Hello {}", "world").into();
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `format!("Hello {}", "world")`