Skip to content

Commit

Permalink
Auto merge of #4567 - phansch:toplevel_ref_arg, r=flip1995
Browse files Browse the repository at this point in the history
Add run-rustfix for toplevel_ref_arg lint

cc #3630
  • Loading branch information
bors committed Sep 23, 2019
2 parents 4d566b6 + df83732 commit d413caa
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 20 deletions.
25 changes: 25 additions & 0 deletions tests/ui/toplevel_ref_arg.fixed
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// run-rustfix

#![warn(clippy::toplevel_ref_arg)]
#![allow(unused)]

fn main() {
// Closures should not warn
let y = |ref x| println!("{:?}", x);
y(1u8);

let x = &1;

let y: &(&_, u8) = &(&1, 2);

let z = &(1 + 2);

let z = &mut (1 + 2);

let (ref x, _) = (1, 2); // ok, not top level
println!("The answer is {}.", x);

// Make sure that allowing the lint works
#[allow(clippy::toplevel_ref_arg)]
let ref mut x = 1_234_543;
}
10 changes: 3 additions & 7 deletions tests/ui/toplevel_ref_arg.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
#![warn(clippy::all)]
#![allow(unused)]
// run-rustfix

fn the_answer(ref mut x: u8) {
*x = 42;
}
#![warn(clippy::toplevel_ref_arg)]
#![allow(unused)]

fn main() {
let mut x = 0;
the_answer(x);
// Closures should not warn
let y = |ref x| println!("{:?}", x);
y(1u8);
Expand Down
20 changes: 7 additions & 13 deletions tests/ui/toplevel_ref_arg.stderr
Original file line number Diff line number Diff line change
@@ -1,34 +1,28 @@
error: `ref` directly on a function argument is ignored. Consider using a reference type instead.
--> $DIR/toplevel_ref_arg.rs:4:15
|
LL | fn the_answer(ref mut x: u8) {
| ^^^^^^^^^
|
= note: `-D clippy::toplevel-ref-arg` implied by `-D warnings`

error: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead
--> $DIR/toplevel_ref_arg.rs:15:9
--> $DIR/toplevel_ref_arg.rs:11:9
|
LL | let ref x = 1;
| ----^^^^^----- help: try: `let x = &1;`
|
= note: `-D clippy::toplevel-ref-arg` implied by `-D warnings`

error: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead
--> $DIR/toplevel_ref_arg.rs:17:9
--> $DIR/toplevel_ref_arg.rs:13:9
|
LL | let ref y: (&_, u8) = (&1, 2);
| ----^^^^^--------------------- help: try: `let y: &(&_, u8) = &(&1, 2);`

error: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead
--> $DIR/toplevel_ref_arg.rs:19:9
--> $DIR/toplevel_ref_arg.rs:15:9
|
LL | let ref z = 1 + 2;
| ----^^^^^--------- help: try: `let z = &(1 + 2);`

error: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead
--> $DIR/toplevel_ref_arg.rs:21:9
--> $DIR/toplevel_ref_arg.rs:17:9
|
LL | let ref mut z = 1 + 2;
| ----^^^^^^^^^--------- help: try: `let z = &mut (1 + 2);`

error: aborting due to 5 previous errors
error: aborting due to 4 previous errors

11 changes: 11 additions & 0 deletions tests/ui/toplevel_ref_arg_non_rustfix.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#![warn(clippy::toplevel_ref_arg)]
#![allow(unused)]

fn the_answer(ref mut x: u8) {
*x = 42;
}

fn main() {
let mut x = 0;
the_answer(x);
}
10 changes: 10 additions & 0 deletions tests/ui/toplevel_ref_arg_non_rustfix.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
error: `ref` directly on a function argument is ignored. Consider using a reference type instead.
--> $DIR/toplevel_ref_arg_non_rustfix.rs:4:15
|
LL | fn the_answer(ref mut x: u8) {
| ^^^^^^^^^
|
= note: `-D clippy::toplevel-ref-arg` implied by `-D warnings`

error: aborting due to previous error

0 comments on commit d413caa

Please sign in to comment.