Skip to content

Commit

Permalink
Make deref_addrof suggestions stricter
Browse files Browse the repository at this point in the history
SUGGESTION matches a substring so 'aref' in the testcases can match
'let b = *aref', 'let b = **aref', 'let b = *&aref' etc, which are
all wrong.
  • Loading branch information
philipturnbull committed Nov 25, 2016
1 parent a9f5b90 commit 8d04038
Showing 1 changed file with 13 additions and 11 deletions.
24 changes: 13 additions & 11 deletions tests/compile-fail/reference.rs
Expand Up @@ -19,56 +19,58 @@ fn main() {
let b = *&a;
//~^ERROR immediately dereferencing a reference
//~|HELP try this
//~|SUGGESTION a
//~|SUGGESTION let b = a;

let b = *&get_number();
//~^ERROR immediately dereferencing a reference
//~|HELP try this
//~|SUGGESTION get_number()
//~|SUGGESTION let b = get_number();

let b = *get_reference(&a);

let bytes : Vec<usize> = vec![1, 2, 3, 4];
let b = *&bytes[1..2][0];
//~^ERROR immediately dereferencing a reference
//~|HELP try this
//~|SUGGESTION bytes[1..2][0]
//~|SUGGESTION let b = bytes[1..2][0];

let b = *(&a);
//~^ERROR immediately dereferencing a reference
//~|HELP try this
//~|SUGGESTION a
//~|SUGGESTION let b = a;

let b = *&&a;
//~^ERROR immediately dereferencing a reference
//~|HELP try this
//~|SUGGESTION &a
//~|SUGGESTION let b = &a;

let b = **&aref;
//~^ERROR immediately dereferencing a reference
//~|HELP try this
//~|SUGGESTION aref
//~|SUGGESTION let b = *aref;

//This produces a suggestion of 'let b = *&a;' which is still incorrect
//This produces a suggestion of 'let b = *&a;' which
//will trigger the 'deref_addrof' lint again
let b = **&&a;
//~^ERROR immediately dereferencing a reference
//~|HELP try this
//~|SUGGESTION a
//~|SUGGESTION let b = *&a;

{
let mut x = 10;
let y = *&mut x;
//~^ERROR immediately dereferencing a reference
//~|HELP try this
//~|SUGGESTION x
//~|SUGGESTION let y = x;
}

{
//This produces a suggestion of 'let y = *&mut x' which is still incorrect
//This produces a suggestion of 'let y = *&mut x' which
//will trigger the 'deref_addrof' lint again
let mut x = 10;
let y = **&mut &mut x;
//~^ERROR immediately dereferencing a reference
//~|HELP try this
//~|SUGGESTION x
//~|SUGGESTION let y = *&mut x;
}
}

0 comments on commit 8d04038

Please sign in to comment.