]> git.lizzy.rs Git - rust.git/commitdiff
Make deref_addrof suggestions stricter
authorPhil Turnbull <philip.turnbull@gmail.com>
Fri, 25 Nov 2016 14:53:49 +0000 (09:53 -0500)
committerPhil Turnbull <philip.turnbull@gmail.com>
Fri, 25 Nov 2016 15:33:01 +0000 (10:33 -0500)
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

index 7a113ad5255e12cb1f307efe7f2bb081f0d57135..178e7387d3fef9f9e00acf9f94728b32fb7a2235 100644 (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;
     }
 }