about summary refs log tree commit diff
path: root/tests/ui/methods
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-04-09 06:02:21 +0200
committerGitHub <noreply@github.com>2024-04-09 06:02:21 +0200
commit643dee7573fcbb0f903acab08cefddffbcbf7f2d (patch)
tree2c4b67c8b62c81b004c7b73b903fea34cdb0f48e /tests/ui/methods
parent59c808fcd9eeb3c5528209d1cef3aaa5521edbd6 (diff)
parent7f9a4af0eb498bd0b1bcd7b6124ed90a1f7fac7b (diff)
downloadrust-643dee7573fcbb0f903acab08cefddffbcbf7f2d.tar.gz
rust-643dee7573fcbb0f903acab08cefddffbcbf7f2d.zip
Rollup merge of #122768 - oli-obk:why_is_E0699_so_bad, r=WaffleLapkin
Use the more informative generic type inference failure error on method calls on raw pointers
Diffstat (limited to 'tests/ui/methods')
-rw-r--r--tests/ui/methods/call_method_unknown_pointee.rs8
-rw-r--r--tests/ui/methods/call_method_unknown_pointee.stderr40
2 files changed, 35 insertions, 13 deletions
diff --git a/tests/ui/methods/call_method_unknown_pointee.rs b/tests/ui/methods/call_method_unknown_pointee.rs
index 1643b6bfa18..a144e855ae3 100644
--- a/tests/ui/methods/call_method_unknown_pointee.rs
+++ b/tests/ui/methods/call_method_unknown_pointee.rs
@@ -8,10 +8,10 @@ fn main() {
     let ptr = &val as *const u32;
     unsafe {
         let _a: i32 = (ptr as *const _).read();
-        //~^ ERROR cannot call a method on a raw pointer with an unknown pointee type [E0699]
+        //~^ ERROR type annotations needed
         let b = ptr as *const _;
+        //~^ ERROR type annotations needed
         let _b: u8 = b.read();
-        //~^ ERROR cannot call a method on a raw pointer with an unknown pointee type [E0699]
         let _c = (ptr as *const u8).read(); // we know the type here
     }
 
@@ -19,10 +19,10 @@ fn main() {
     let ptr = &mut val as *mut u32;
     unsafe {
         let _a: i32 = (ptr as *mut _).read();
-        //~^ ERROR cannot call a method on a raw pointer with an unknown pointee type [E0699]
+        //~^ ERROR type annotations needed
         let b = ptr as *mut _;
+        //~^ ERROR type annotations needed
         b.write(10);
-        //~^ ERROR cannot call a method on a raw pointer with an unknown pointee type [E0699]
         (ptr as *mut i32).write(1000); // we know the type here
     }
 }
diff --git a/tests/ui/methods/call_method_unknown_pointee.stderr b/tests/ui/methods/call_method_unknown_pointee.stderr
index 84ecf046e7a..9d0f38cf6b5 100644
--- a/tests/ui/methods/call_method_unknown_pointee.stderr
+++ b/tests/ui/methods/call_method_unknown_pointee.stderr
@@ -1,27 +1,49 @@
-error[E0699]: cannot call a method on a raw pointer with an unknown pointee type
+error[E0282]: type annotations needed
   --> $DIR/call_method_unknown_pointee.rs:10:41
    |
 LL |         let _a: i32 = (ptr as *const _).read();
    |                                         ^^^^
+   |                                         |
+   |                                         cannot infer type
+   |                                         cannot call a method on a raw pointer with an unknown pointee type
 
-error[E0699]: cannot call a method on a raw pointer with an unknown pointee type
-  --> $DIR/call_method_unknown_pointee.rs:13:24
+error[E0282]: type annotations needed for `*const _`
+  --> $DIR/call_method_unknown_pointee.rs:12:13
    |
+LL |         let b = ptr as *const _;
+   |             ^
+LL |
 LL |         let _b: u8 = b.read();
-   |                        ^^^^
+   |                        ---- cannot call a method on a raw pointer with an unknown pointee type
+   |
+help: consider giving `b` an explicit type, where the placeholders `_` are specified
+   |
+LL |         let b: *const _ = ptr as *const _;
+   |              ++++++++++
 
-error[E0699]: cannot call a method on a raw pointer with an unknown pointee type
+error[E0282]: type annotations needed
   --> $DIR/call_method_unknown_pointee.rs:21:39
    |
 LL |         let _a: i32 = (ptr as *mut _).read();
    |                                       ^^^^
+   |                                       |
+   |                                       cannot infer type
+   |                                       cannot call a method on a raw pointer with an unknown pointee type
 
-error[E0699]: cannot call a method on a raw pointer with an unknown pointee type
-  --> $DIR/call_method_unknown_pointee.rs:24:11
+error[E0282]: type annotations needed for `*mut _`
+  --> $DIR/call_method_unknown_pointee.rs:23:13
    |
+LL |         let b = ptr as *mut _;
+   |             ^
+LL |
 LL |         b.write(10);
-   |           ^^^^^
+   |           ----- cannot call a method on a raw pointer with an unknown pointee type
+   |
+help: consider giving `b` an explicit type, where the placeholders `_` are specified
+   |
+LL |         let b: *mut _ = ptr as *mut _;
+   |              ++++++++
 
 error: aborting due to 4 previous errors
 
-For more information about this error, try `rustc --explain E0699`.
+For more information about this error, try `rustc --explain E0282`.