mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-23 05:03:21 +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()`
|
||||
let y = x.cloned();
|
||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||
//~| HELP: consider calling the dedicated `cloned` method
|
||||
let y = x.cloned();
|
||||
//~^ 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.
|
||||
let x: Result<String, ()> = Ok(String::new());
|
||||
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
||||
let y = x.cloned();
|
||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||
//~| HELP: consider calling the dedicated `cloned` method
|
||||
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.
|
||||
let x = Some(String::new());
|
||||
|
|
|
@ -69,15 +69,48 @@ fn main() {
|
|||
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||
let y = x.map(Clone::clone);
|
||||
//~^ ERROR: you are explicitly cloning with `.map()`
|
||||
//~| HELP: consider calling the dedicated `cloned` method
|
||||
let y = x.map(String::clone);
|
||||
//~^ 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.
|
||||
let x: Result<String, ()> = Ok(String::new());
|
||||
let x = x.as_ref(); // We do this to prevent triggering the `useless_asref` lint.
|
||||
let y = x.map(|x| String::clone(x));
|
||||
//~^ 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.
|
||||
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()`
|
||||
|
||||
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);
|
||||
| ^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
||||
|
||||
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));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
||||
|
||||
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));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `x.cloned()`
|
||||
LL | let y = x.map(|x| Clone::clone(x));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ 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