summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/needless_pass_by_value.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clippy/tests/ui/needless_pass_by_value.rs')
-rw-r--r--src/tools/clippy/tests/ui/needless_pass_by_value.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/tools/clippy/tests/ui/needless_pass_by_value.rs b/src/tools/clippy/tests/ui/needless_pass_by_value.rs
index d79ad86b1..14cba5a7e 100644
--- a/src/tools/clippy/tests/ui/needless_pass_by_value.rs
+++ b/src/tools/clippy/tests/ui/needless_pass_by_value.rs
@@ -7,7 +7,7 @@
clippy::single_match,
clippy::uninlined_format_args
)]
-
+//@no-rustfix
use std::borrow::Borrow;
use std::collections::HashSet;
use std::convert::AsRef;
@@ -16,6 +16,8 @@ use std::mem::MaybeUninit;
// `v` should be warned
// `w`, `x` and `y` are allowed (moved or mutated)
fn foo<T: Default>(v: Vec<T>, w: Vec<T>, mut x: Vec<T>, y: Vec<T>) -> Vec<T> {
+ //~^ ERROR: this argument is passed by value, but not consumed in the function body
+ //~| NOTE: `-D clippy::needless-pass-by-value` implied by `-D warnings`
assert_eq!(v.len(), 42);
consume(w);
@@ -30,12 +32,15 @@ fn consume<T>(_: T) {}
struct Wrapper(String);
fn bar(x: String, y: Wrapper) {
+ //~^ ERROR: this argument is passed by value, but not consumed in the function body
+ //~| ERROR: this argument is passed by value, but not consumed in the function body
assert_eq!(x.len(), 42);
assert_eq!(y.0.len(), 42);
}
// V implements `Borrow<V>`, but should be warned correctly
fn test_borrow_trait<T: Borrow<str>, U: AsRef<str>, V>(t: T, u: U, v: V) {
+ //~^ ERROR: this argument is passed by value, but not consumed in the function body
println!("{}", t.borrow());
println!("{}", u.as_ref());
consume(&v);
@@ -48,6 +53,7 @@ fn test_fn<F: Fn(i32) -> i32>(f: F) {
// x should be warned, but y is ok
fn test_match(x: Option<Option<String>>, y: Option<Option<String>>) {
+ //~^ ERROR: this argument is passed by value, but not consumed in the function body
match x {
Some(Some(_)) => 1, // not moved
_ => 0,
@@ -61,6 +67,8 @@ fn test_match(x: Option<Option<String>>, y: Option<Option<String>>) {
// x and y should be warned, but z is ok
fn test_destructure(x: Wrapper, y: Wrapper, z: Wrapper) {
+ //~^ ERROR: this argument is passed by value, but not consumed in the function body
+ //~| ERROR: this argument is passed by value, but not consumed in the function body
let Wrapper(s) = z; // moved
let Wrapper(ref t) = y; // not moved
let Wrapper(_) = y; // still not moved
@@ -77,8 +85,13 @@ impl<'a, T> Serialize for &'a T where T: Serialize {}
impl Serialize for i32 {}
fn test_blanket_ref<T: Foo, S: Serialize>(_foo: T, _serializable: S) {}
+//~^ ERROR: this argument is passed by value, but not consumed in the function body
fn issue_2114(s: String, t: String, u: Vec<i32>, v: Vec<i32>) {
+ //~^ ERROR: this argument is passed by value, but not consumed in the function body
+ //~| ERROR: this argument is passed by value, but not consumed in the function body
+ //~| ERROR: this argument is passed by value, but not consumed in the function body
+ //~| ERROR: this argument is passed by value, but not consumed in the function body
s.capacity();
let _ = t.clone();
u.capacity();
@@ -92,7 +105,9 @@ impl<T: Serialize, U> S<T, U> {
self,
// taking `self` by value is always allowed
s: String,
+ //~^ ERROR: this argument is passed by value, but not consumed in the function bod
t: String,
+ //~^ ERROR: this argument is passed by value, but not consumed in the function bod
) -> usize {
s.len() + t.capacity()
}
@@ -102,6 +117,8 @@ impl<T: Serialize, U> S<T, U> {
}
fn baz(&self, _u: U, _s: Self) {}
+ //~^ ERROR: this argument is passed by value, but not consumed in the function body
+ //~| ERROR: this argument is passed by value, but not consumed in the function body
}
trait FalsePositive {
@@ -124,12 +141,16 @@ fn range<T: ::std::ops::RangeBounds<usize>>(range: T) {
struct CopyWrapper(u32);
fn bar_copy(x: u32, y: CopyWrapper) {
+ //~^ ERROR: this argument is passed by value, but not consumed in the function body
assert_eq!(x, 42);
assert_eq!(y.0, 42);
}
// x and y should be warned, but z is ok
fn test_destructure_copy(x: CopyWrapper, y: CopyWrapper, z: CopyWrapper) {
+ //~^ ERROR: this argument is passed by value, but not consumed in the function body
+ //~| ERROR: this argument is passed by value, but not consumed in the function body
+ //~| ERROR: this argument is passed by value, but not consumed in the function body
let CopyWrapper(s) = z; // moved
let CopyWrapper(ref t) = y; // not moved
let CopyWrapper(_) = y; // still not moved
@@ -142,11 +163,13 @@ fn test_destructure_copy(x: CopyWrapper, y: CopyWrapper, z: CopyWrapper) {
trait Bar<'a, A> {}
impl<'b, T> Bar<'b, T> for T {}
fn some_fun<'b, S: Bar<'b, ()>>(_item: S) {}
+//~^ ERROR: this argument is passed by value, but not consumed in the function body
// Also this should not cause an ICE. See #2831
trait Club<'a, A> {}
impl<T> Club<'static, T> for T {}
fn more_fun(_item: impl Club<'static, i32>) {}
+//~^ ERROR: this argument is passed by value, but not consumed in the function body
fn is_sync<T>(_: T)
where