mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-14 00:47:16 +00:00
Add new ui tests for map_clone
lint on types implementing Copy
This commit is contained in:
parent
82841aada4
commit
74db4b7f6d
3 changed files with 97 additions and 7 deletions
|
@ -69,15 +69,48 @@ fn main() {
|
||||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
let y = x.cloned();
|
let y = x.cloned();
|
||||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `cloned` method
|
||||||
let y = x.cloned();
|
let y = x.cloned();
|
||||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `cloned` method
|
||||||
|
|
||||||
|
let x: Option<u32> = Some(0);
|
||||||
|
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
||||||
|
let y = x.copied();
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `copied` method
|
||||||
|
let y = x.copied();
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `copied` method
|
||||||
|
|
||||||
|
// Should not suggest `copied` or `cloned` here since `T` is not a reference.
|
||||||
|
let x: Option<u32> = Some(0);
|
||||||
|
let y = x.map(|x| u32::clone(&x));
|
||||||
|
let y = x.map(|x| Clone::clone(&x));
|
||||||
|
|
||||||
// Testing with `Result` now.
|
// Testing with `Result` now.
|
||||||
let x: Result<String, ()> = Ok(String::new());
|
let x: Result<String, ()> = Ok(String::new());
|
||||||
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
||||||
let y = x.cloned();
|
let y = x.cloned();
|
||||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `cloned` method
|
||||||
let y = x.cloned();
|
let y = x.cloned();
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `cloned` method
|
||||||
|
|
||||||
|
let x: Result<u32, ()> = Ok(0);
|
||||||
|
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
||||||
|
let y = x.copied();
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `copied` method
|
||||||
|
let y = x.copied();
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `copied` method
|
||||||
|
|
||||||
|
// Should not suggest `copied` or `cloned` here since `T` is not a reference.
|
||||||
|
let x: Result<u32, ()> = Ok(0);
|
||||||
|
let y = x.map(|x| u32::clone(&x));
|
||||||
|
let y = x.map(|x| Clone::clone(&x));
|
||||||
|
|
||||||
// We ensure that no warning is emitted here because `useless_asref` is taking over.
|
// We ensure that no warning is emitted here because `useless_asref` is taking over.
|
||||||
let x = Some(String::new());
|
let x = Some(String::new());
|
||||||
|
|
|
@ -69,15 +69,48 @@ fn main() {
|
||||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
let y = x.map(Clone::clone);
|
let y = x.map(Clone::clone);
|
||||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `cloned` method
|
||||||
let y = x.map(String::clone);
|
let y = x.map(String::clone);
|
||||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `cloned` method
|
||||||
|
|
||||||
|
let x: Option<u32> = Some(0);
|
||||||
|
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
||||||
|
let y = x.map(|x| u32::clone(x));
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `copied` method
|
||||||
|
let y = x.map(|x| Clone::clone(x));
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `copied` method
|
||||||
|
|
||||||
|
// Should not suggest `copied` or `cloned` here since `T` is not a reference.
|
||||||
|
let x: Option<u32> = Some(0);
|
||||||
|
let y = x.map(|x| u32::clone(&x));
|
||||||
|
let y = x.map(|x| Clone::clone(&x));
|
||||||
|
|
||||||
// Testing with `Result` now.
|
// Testing with `Result` now.
|
||||||
let x: Result<String, ()> = Ok(String::new());
|
let x: Result<String, ()> = Ok(String::new());
|
||||||
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
||||||
let y = x.map(|x| String::clone(x));
|
let y = x.map(|x| String::clone(x));
|
||||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
let y = x.map(|x| String::clone(x));
|
//~| HELP: consider calling the dedicated `cloned` method
|
||||||
|
let y = x.map(|x| Clone::clone(x));
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `cloned` method
|
||||||
|
|
||||||
|
let x: Result<u32, ()> = Ok(0);
|
||||||
|
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
||||||
|
let y = x.map(|x| u32::clone(x));
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `copied` method
|
||||||
|
let y = x.map(|x| Clone::clone(x));
|
||||||
|
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||||
|
//~| HELP: consider calling the dedicated `copied` method
|
||||||
|
|
||||||
|
// Should not suggest `copied` or `cloned` here since `T` is not a reference.
|
||||||
|
let x: Result<u32, ()> = Ok(0);
|
||||||
|
let y = x.map(|x| u32::clone(&x));
|
||||||
|
let y = x.map(|x| Clone::clone(&x));
|
||||||
|
|
||||||
// We ensure that no warning is emitted here because `useless_asref` is taking over.
|
// We ensure that no warning is emitted here because `useless_asref` is taking over.
|
||||||
let x = Some(String::new());
|
let x = Some(String::new());
|
||||||
|
|
|
@ -50,22 +50,46 @@ LL | let y = x.map(Clone::clone);
|
||||||
| ^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
| ^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
||||||
|
|
||||||
error: you are explicitly cloning with `.map()`
|
error: you are explicitly cloning with `.map()`
|
||||||
--> $DIR/map_clone.rs:72:13
|
--> $DIR/map_clone.rs:73:13
|
||||||
|
|
|
|
||||||
LL | let y = x.map(String::clone);
|
LL | let y = x.map(String::clone);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
| ^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
||||||
|
|
||||||
error: you are explicitly cloning with `.map()`
|
error: you are explicitly cloning with `.map()`
|
||||||
--> $DIR/map_clone.rs:78:13
|
--> $DIR/map_clone.rs:79:13
|
||||||
|
|
|
||||||
|
LL | let y = x.map(|x| u32::clone(x));
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `x.copied()`
|
||||||
|
|
||||||
|
error: you are explicitly cloning with `.map()`
|
||||||
|
--> $DIR/map_clone.rs:82:13
|
||||||
|
|
|
||||||
|
LL | let y = x.map(|x| Clone::clone(x));
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `x.copied()`
|
||||||
|
|
||||||
|
error: you are explicitly cloning with `.map()`
|
||||||
|
--> $DIR/map_clone.rs:94:13
|
||||||
|
|
|
|
||||||
LL | let y = x.map(|x| String::clone(x));
|
LL | let y = x.map(|x| String::clone(x));
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
||||||
|
|
||||||
error: you are explicitly cloning with `.map()`
|
error: you are explicitly cloning with `.map()`
|
||||||
--> $DIR/map_clone.rs:80:13
|
--> $DIR/map_clone.rs:97:13
|
||||||
|
|
|
|
||||||
LL | let y = x.map(|x| String::clone(x));
|
LL | let y = x.map(|x| Clone::clone(x));
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
||||||
|
|
||||||
error: aborting due to 11 previous errors
|
error: you are explicitly cloning with `.map()`
|
||||||
|
--> $DIR/map_clone.rs:103:13
|
||||||
|
|
|
||||||
|
LL | let y = x.map(|x| u32::clone(x));
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `x.copied()`
|
||||||
|
|
||||||
|
error: you are explicitly cloning with `.map()`
|
||||||
|
--> $DIR/map_clone.rs:106:13
|
||||||
|
|
|
||||||
|
LL | let y = x.map(|x| Clone::clone(x));
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `x.copied()`
|
||||||
|
|
||||||
|
error: aborting due to 15 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue