From ed8783fdd48c4dbb768e00aead3bbd6d73e52a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Mon, 6 May 2019 21:41:05 +0200 Subject: [PATCH] trivially_copy_pass_by_ref: print size of type and limit in the lint message --- .../src/trivially_copy_pass_by_ref.rs | 4 +- tests/ui-toml/toml_trivially_copy/test.rs | 3 + tests/ui-toml/toml_trivially_copy/test.stderr | 8 +-- tests/ui/trivially_copy_pass_by_ref.rs | 3 + tests/ui/trivially_copy_pass_by_ref.stderr | 60 +++++++++---------- 5 files changed, 42 insertions(+), 36 deletions(-) diff --git a/clippy_lints/src/trivially_copy_pass_by_ref.rs b/clippy_lints/src/trivially_copy_pass_by_ref.rs index 36dba74615a4..0052637444b5 100644 --- a/clippy_lints/src/trivially_copy_pass_by_ref.rs +++ b/clippy_lints/src/trivially_copy_pass_by_ref.rs @@ -65,7 +65,7 @@ impl<'a, 'tcx> TriviallyCopyPassByRef { // portability problems between 32 and 64-bit targets let bit_width = cmp::min(bit_width, 32); let byte_width = bit_width / 8; - // Use a limit of 2 times the register bit width + // Use a limit of 2 times the register byte width byte_width * 2 }); Self { limit } @@ -118,7 +118,7 @@ impl<'a, 'tcx> TriviallyCopyPassByRef { cx, TRIVIALLY_COPY_PASS_BY_REF, input.span, - "this argument is passed by reference, but would be more efficient if passed by value", + &format!("this argument ({} B) is passed by reference, but would be more efficient if passed by value (limit: {} B)", size, self.limit), "consider passing by value instead", value_type, Applicability::Unspecified, diff --git a/tests/ui-toml/toml_trivially_copy/test.rs b/tests/ui-toml/toml_trivially_copy/test.rs index f24fe51d30f0..876b6da7f81d 100644 --- a/tests/ui-toml/toml_trivially_copy/test.rs +++ b/tests/ui-toml/toml_trivially_copy/test.rs @@ -1,3 +1,6 @@ +// normalize-stderr-test "\(\d+ B\)" -> "(N B)" +// normalize-stderr-test "\(limit: \d+ B\)" -> "(limit: N B)" + #![allow(clippy::many_single_char_names)] #[derive(Copy, Clone)] diff --git a/tests/ui-toml/toml_trivially_copy/test.stderr b/tests/ui-toml/toml_trivially_copy/test.stderr index 746b9ffa4af1..930196985f48 100644 --- a/tests/ui-toml/toml_trivially_copy/test.stderr +++ b/tests/ui-toml/toml_trivially_copy/test.stderr @@ -1,13 +1,13 @@ -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/test.rs:11:11 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/test.rs:14:11 | LL | fn bad(x: &u16, y: &Foo) {} | ^^^^ help: consider passing by value instead: `u16` | = note: `-D clippy::trivially-copy-pass-by-ref` implied by `-D warnings` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/test.rs:11:20 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/test.rs:14:20 | LL | fn bad(x: &u16, y: &Foo) {} | ^^^^ help: consider passing by value instead: `Foo` diff --git a/tests/ui/trivially_copy_pass_by_ref.rs b/tests/ui/trivially_copy_pass_by_ref.rs index c12d98565015..8dfee6c8917a 100644 --- a/tests/ui/trivially_copy_pass_by_ref.rs +++ b/tests/ui/trivially_copy_pass_by_ref.rs @@ -1,3 +1,6 @@ +// normalize-stderr-test "\(\d+ B\)" -> "(N B)" +// normalize-stderr-test "\(limit: \d+ B\)" -> "(limit: N B)" + #![allow( clippy::many_single_char_names, clippy::blacklisted_name, diff --git a/tests/ui/trivially_copy_pass_by_ref.stderr b/tests/ui/trivially_copy_pass_by_ref.stderr index 754069b421cc..ed557426460f 100644 --- a/tests/ui/trivially_copy_pass_by_ref.stderr +++ b/tests/ui/trivially_copy_pass_by_ref.stderr @@ -1,91 +1,91 @@ -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:47:11 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:50:11 | LL | fn bad(x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `u32` | = note: `-D clippy::trivially-copy-pass-by-ref` implied by `-D warnings` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:47:20 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:50:20 | LL | fn bad(x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `Foo` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:47:29 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:50:29 | LL | fn bad(x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `Baz` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:54:12 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:57:12 | LL | fn bad(&self, x: &u32, y: &Foo, z: &Baz) {} | ^^^^^ help: consider passing by value instead: `self` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:54:22 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:57:22 | LL | fn bad(&self, x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `u32` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:54:31 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:57:31 | LL | fn bad(&self, x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `Foo` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:54:40 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:57:40 | LL | fn bad(&self, x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `Baz` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:56:16 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:59:16 | LL | fn bad2(x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `u32` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:56:25 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:59:25 | LL | fn bad2(x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `Foo` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:56:34 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:59:34 | LL | fn bad2(x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `Baz` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:68:16 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:71:16 | LL | fn bad2(x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `u32` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:68:25 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:71:25 | LL | fn bad2(x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `Foo` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:68:34 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:71:34 | LL | fn bad2(x: &u32, y: &Foo, z: &Baz) {} | ^^^^ help: consider passing by value instead: `Baz` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:72:34 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:75:34 | LL | fn trait_method(&self, _foo: &Foo); | ^^^^ help: consider passing by value instead: `Foo` -error: this argument is passed by reference, but would be more efficient if passed by value - --> $DIR/trivially_copy_pass_by_ref.rs:76:37 +error: this argument (N B) is passed by reference, but would be more efficient if passed by value (limit: N B) + --> $DIR/trivially_copy_pass_by_ref.rs:79:37 | LL | fn trait_method2(&self, _color: &Color); | ^^^^^^ help: consider passing by value instead: `Color`