From 8d04038c569898097f5abea2ec15b730936e03a0 Mon Sep 17 00:00:00 2001 From: Phil Turnbull Date: Fri, 25 Nov 2016 09:53:49 -0500 Subject: [PATCH] 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. --- tests/compile-fail/reference.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/tests/compile-fail/reference.rs b/tests/compile-fail/reference.rs index 7a113ad5255..178e7387d3f 100644 --- a/tests/compile-fail/reference.rs +++ b/tests/compile-fail/reference.rs @@ -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; } }