clone_double_ref: print reference type in lint message
changelog: clone_double_ref: print the type of the reference in lint message
This commit is contained in:
parent
baf5f2da8b
commit
0b145d688b
@ -2100,8 +2100,11 @@ fn lint_clone_on_copy(cx: &LateContext<'_>, expr: &hir::Expr<'_>, arg: &hir::Exp
|
|||||||
cx,
|
cx,
|
||||||
CLONE_DOUBLE_REF,
|
CLONE_DOUBLE_REF,
|
||||||
expr.span,
|
expr.span,
|
||||||
"using `clone` on a double-reference; \
|
&format!(
|
||||||
this will copy the reference instead of cloning the inner type",
|
"using `clone` on a double-reference; \
|
||||||
|
this will copy the reference of type `{}` instead of cloning the inner type",
|
||||||
|
ty
|
||||||
|
),
|
||||||
|diag| {
|
|diag| {
|
||||||
if let Some(snip) = sugg::Sugg::hir_opt(cx, arg) {
|
if let Some(snip) = sugg::Sugg::hir_opt(cx, arg) {
|
||||||
let mut ty = innermost;
|
let mut ty = innermost;
|
||||||
|
@ -44,7 +44,7 @@ error: using `clone` on a `Copy` type
|
|||||||
LL | Some(t).clone();
|
LL | Some(t).clone();
|
||||||
| ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `Some(t)`
|
| ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `Some(t)`
|
||||||
|
|
||||||
error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type
|
error: using `clone` on a double-reference; this will copy the reference of type `&std::vec::Vec<i32>` instead of cloning the inner type
|
||||||
--> $DIR/unnecessary_clone.rs:48:22
|
--> $DIR/unnecessary_clone.rs:48:22
|
||||||
|
|
|
|
||||||
LL | let z: &Vec<_> = y.clone();
|
LL | let z: &Vec<_> = y.clone();
|
||||||
@ -66,7 +66,7 @@ error: using `clone` on a `Copy` type
|
|||||||
LL | let _: E = a.clone();
|
LL | let _: E = a.clone();
|
||||||
| ^^^^^^^^^ help: try dereferencing it: `*****a`
|
| ^^^^^^^^^ help: try dereferencing it: `*****a`
|
||||||
|
|
||||||
error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type
|
error: using `clone` on a double-reference; this will copy the reference of type `&[u8]` instead of cloning the inner type
|
||||||
--> $DIR/unnecessary_clone.rs:89:22
|
--> $DIR/unnecessary_clone.rs:89:22
|
||||||
|
|
|
|
||||||
LL | let _ = &mut encoded.clone();
|
LL | let _ = &mut encoded.clone();
|
||||||
@ -81,7 +81,7 @@ help: or try being explicit if you are sure, that you want to clone a reference
|
|||||||
LL | let _ = &mut <&[u8]>::clone(encoded);
|
LL | let _ = &mut <&[u8]>::clone(encoded);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type
|
error: using `clone` on a double-reference; this will copy the reference of type `&[u8]` instead of cloning the inner type
|
||||||
--> $DIR/unnecessary_clone.rs:90:18
|
--> $DIR/unnecessary_clone.rs:90:18
|
||||||
|
|
|
|
||||||
LL | let _ = &encoded.clone();
|
LL | let _ = &encoded.clone();
|
||||||
|
Loading…
Reference in New Issue
Block a user