about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/deref_addrof.fixed20
-rw-r--r--tests/ui/deref_addrof.rs10
-rw-r--r--tests/ui/deref_addrof.stderr34
3 files changed, 55 insertions, 9 deletions
diff --git a/tests/ui/deref_addrof.fixed b/tests/ui/deref_addrof.fixed
index 6b200edc38b..ae8ed0dc114 100644
--- a/tests/ui/deref_addrof.fixed
+++ b/tests/ui/deref_addrof.fixed
@@ -112,15 +112,23 @@ fn issue14386() {
         *a.prim = 0;
         //~^ deref_addrof
 
-        (*&mut a.data).num = 42;
-        (*&mut a.tup).0.num = 42;
-        (*&mut a.indirect.md)[3] = 1;
-        (*&mut a.indirect_arr[1].md)[3] = 1;
-        (*&mut a.indirect_ref.md)[3] = 1;
+        (*a.data).num = 42;
+        //~^ deref_addrof
+        (*a.indirect.md)[3] = 1;
+        //~^ deref_addrof
+        (*a.indirect_arr[1].md)[3] = 1;
+        //~^ deref_addrof
+        (*a.indirect_ref.md)[3] = 1;
+        //~^ deref_addrof
 
         // Check that raw pointers are properly considered as well
         *a.prim = 0;
         //~^ deref_addrof
-        (*&raw mut a.data).num = 42;
+        (*a.data).num = 42;
+        //~^ deref_addrof
+
+        // Do not lint, as the dereference happens later, we cannot
+        // just remove `&mut`
+        (*&mut a.tup).0.num = 42;
     }
 }
diff --git a/tests/ui/deref_addrof.rs b/tests/ui/deref_addrof.rs
index abc9e819ade..4ff01405916 100644
--- a/tests/ui/deref_addrof.rs
+++ b/tests/ui/deref_addrof.rs
@@ -113,14 +113,22 @@ fn issue14386() {
         //~^ deref_addrof
 
         (*&mut a.data).num = 42;
-        (*&mut a.tup).0.num = 42;
+        //~^ deref_addrof
         (*&mut a.indirect.md)[3] = 1;
+        //~^ deref_addrof
         (*&mut a.indirect_arr[1].md)[3] = 1;
+        //~^ deref_addrof
         (*&mut a.indirect_ref.md)[3] = 1;
+        //~^ deref_addrof
 
         // Check that raw pointers are properly considered as well
         **&raw mut a.prim = 0;
         //~^ deref_addrof
         (*&raw mut a.data).num = 42;
+        //~^ deref_addrof
+
+        // Do not lint, as the dereference happens later, we cannot
+        // just remove `&mut`
+        (*&mut a.tup).0.num = 42;
     }
 }
diff --git a/tests/ui/deref_addrof.stderr b/tests/ui/deref_addrof.stderr
index 3c422a4040b..adfa542765c 100644
--- a/tests/ui/deref_addrof.stderr
+++ b/tests/ui/deref_addrof.stderr
@@ -90,10 +90,40 @@ LL |         **&mut a.prim = 0;
    |          ^^^^^^^^^^^^ help: try: `a.prim`
 
 error: immediately dereferencing a reference
-  --> tests/ui/deref_addrof.rs:122:10
+  --> tests/ui/deref_addrof.rs:115:9
+   |
+LL |         (*&mut a.data).num = 42;
+   |         ^^^^^^^^^^^^^^ help: try: `(*a.data)`
+
+error: immediately dereferencing a reference
+  --> tests/ui/deref_addrof.rs:117:9
+   |
+LL |         (*&mut a.indirect.md)[3] = 1;
+   |         ^^^^^^^^^^^^^^^^^^^^^ help: try: `(*a.indirect.md)`
+
+error: immediately dereferencing a reference
+  --> tests/ui/deref_addrof.rs:119:9
+   |
+LL |         (*&mut a.indirect_arr[1].md)[3] = 1;
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*a.indirect_arr[1].md)`
+
+error: immediately dereferencing a reference
+  --> tests/ui/deref_addrof.rs:121:9
+   |
+LL |         (*&mut a.indirect_ref.md)[3] = 1;
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*a.indirect_ref.md)`
+
+error: immediately dereferencing a reference
+  --> tests/ui/deref_addrof.rs:125:10
    |
 LL |         **&raw mut a.prim = 0;
    |          ^^^^^^^^^^^^^^^^ help: try: `a.prim`
 
-error: aborting due to 15 previous errors
+error: immediately dereferencing a reference
+  --> tests/ui/deref_addrof.rs:127:9
+   |
+LL |         (*&raw mut a.data).num = 42;
+   |         ^^^^^^^^^^^^^^^^^^ help: try: `(*a.data)`
+
+error: aborting due to 20 previous errors