Skip to content

Commit

Permalink
Add run-rustfix for deref_addrof lint
Browse files Browse the repository at this point in the history
* renames `tests/ui/reference.{rs,stderr}` to
  `tests/ui/deref_addrof.{rs,stderr}
* Moves small part of the testfile to a separate file as the lint
  triggered again on the fixed code (as intended)
* Adds `// run-rustfix` to `tests/ui/deref_addrof.rs`
  • Loading branch information
phansch committed Apr 16, 2019
1 parent d516925 commit 75c591d
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 44 deletions.
39 changes: 39 additions & 0 deletions tests/ui/deref_addrof.fixed
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// run-rustfix

fn get_number() -> usize {
10
}

fn get_reference(n: &usize) -> &usize {
n
}

#[allow(clippy::many_single_char_names, clippy::double_parens)]
#[allow(unused_variables, unused_parens)]
#[warn(clippy::deref_addrof)]
fn main() {
let a = 10;
let aref = &a;

let b = a;

let b = get_number();

let b = *get_reference(&a);

let bytes: Vec<usize> = vec![1, 2, 3, 4];
let b = bytes[1..2][0];

//This produces a suggestion of 'let b = (a);' which
//will trigger the 'unused_parens' lint
let b = (a);

let b = a;

#[rustfmt::skip]
let b = a;

let b = &a;

let b = *aref;
}
20 changes: 3 additions & 17 deletions tests/ui/reference.rs → tests/ui/deref_addrof.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// run-rustfix

fn get_number() -> usize {
10
}
Expand All @@ -7,7 +9,7 @@ fn get_reference(n: &usize) -> &usize {
}

#[allow(clippy::many_single_char_names, clippy::double_parens)]
#[allow(unused_variables)]
#[allow(unused_variables, unused_parens)]
#[warn(clippy::deref_addrof)]
fn main() {
let a = 10;
Expand All @@ -34,20 +36,4 @@ fn main() {
let b = *&&a;

let b = **&aref;

//This produces a suggestion of 'let b = *&a;' which
//will trigger the 'clippy::deref_addrof' lint again
let b = **&&a;

{
let mut x = 10;
let y = *&mut x;
}

{
//This produces a suggestion of 'let y = *&mut x' which
//will trigger the 'clippy::deref_addrof' lint again
let mut x = 10;
let y = **&mut &mut x;
}
}
36 changes: 9 additions & 27 deletions tests/ui/reference.stderr → tests/ui/deref_addrof.stderr
Original file line number Diff line number Diff line change
@@ -1,70 +1,52 @@
error: immediately dereferencing a reference
--> $DIR/reference.rs:16:13
--> $DIR/deref_addrof.rs:18:13
|
LL | let b = *&a;
| ^^^ help: try this: `a`
|
= note: `-D clippy::deref-addrof` implied by `-D warnings`

error: immediately dereferencing a reference
--> $DIR/reference.rs:18:13
--> $DIR/deref_addrof.rs:20:13
|
LL | let b = *&get_number();
| ^^^^^^^^^^^^^^ help: try this: `get_number()`

error: immediately dereferencing a reference
--> $DIR/reference.rs:23:13
--> $DIR/deref_addrof.rs:25:13
|
LL | let b = *&bytes[1..2][0];
| ^^^^^^^^^^^^^^^^ help: try this: `bytes[1..2][0]`

error: immediately dereferencing a reference
--> $DIR/reference.rs:27:13
--> $DIR/deref_addrof.rs:29:13
|
LL | let b = *&(a);
| ^^^^^ help: try this: `(a)`

error: immediately dereferencing a reference
--> $DIR/reference.rs:29:13
--> $DIR/deref_addrof.rs:31:13
|
LL | let b = *(&a);
| ^^^^^ help: try this: `a`

error: immediately dereferencing a reference
--> $DIR/reference.rs:32:13
--> $DIR/deref_addrof.rs:34:13
|
LL | let b = *((&a));
| ^^^^^^^ help: try this: `a`

error: immediately dereferencing a reference
--> $DIR/reference.rs:34:13
--> $DIR/deref_addrof.rs:36:13
|
LL | let b = *&&a;
| ^^^^ help: try this: `&a`

error: immediately dereferencing a reference
--> $DIR/reference.rs:36:14
--> $DIR/deref_addrof.rs:38:14
|
LL | let b = **&aref;
| ^^^^^^ help: try this: `aref`

error: immediately dereferencing a reference
--> $DIR/reference.rs:40:14
|
LL | let b = **&&a;
| ^^^^ help: try this: `&a`

error: immediately dereferencing a reference
--> $DIR/reference.rs:44:17
|
LL | let y = *&mut x;
| ^^^^^^^ help: try this: `x`

error: immediately dereferencing a reference
--> $DIR/reference.rs:51:18
|
LL | let y = **&mut &mut x;
| ^^^^^^^^^^^^ help: try this: `&mut x`

error: aborting due to 11 previous errors
error: aborting due to 8 previous errors

19 changes: 19 additions & 0 deletions tests/ui/deref_addrof_double_trigger.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#[warn(clippy::deref_addrof)]
#[allow(unused_variables)]
fn main() {
//This produces a suggestion of 'let b = *&a;' which
//will trigger the 'clippy::deref_addrof' lint again
let b = **&&a;

{
let mut x = 10;
let y = *&mut x;
}

{
//This produces a suggestion of 'let y = *&mut x' which
//will trigger the 'clippy::deref_addrof' lint again
let mut x = 10;
let y = **&mut &mut x;
}
}
29 changes: 29 additions & 0 deletions tests/ui/deref_addrof_double_trigger.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
error[E0425]: cannot find value `a` in this scope
--> $DIR/deref_addrof_double_trigger.rs:6:17
|
LL | let b = **&&a;
| ^ not found in this scope

error: immediately dereferencing a reference
--> $DIR/deref_addrof_double_trigger.rs:6:14
|
LL | let b = **&&a;
| ^^^^ help: try this: `&a`
|
= note: `-D clippy::deref-addrof` implied by `-D warnings`

error: immediately dereferencing a reference
--> $DIR/deref_addrof_double_trigger.rs:10:17
|
LL | let y = *&mut x;
| ^^^^^^^ help: try this: `x`

error: immediately dereferencing a reference
--> $DIR/deref_addrof_double_trigger.rs:17:18
|
LL | let y = **&mut &mut x;
| ^^^^^^^^^^^^ help: try this: `&mut x`

error: aborting due to 4 previous errors

For more information about this error, try `rustc --explain E0425`.

0 comments on commit 75c591d

Please sign in to comment.