Make deref_addrof suggestions stricter

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.
This commit is contained in:
Phil Turnbull 2016-11-25 09:53:49 -05:00
parent a9f5b90f0f
commit 8d04038c56

View file

@ -19,12 +19,12 @@ 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);
@ -32,43 +32,45 @@ fn main() {
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;
}
}