Add help for trying to do C-like pointer arithmetics
This commit is contained in:
parent
8b35c0bb0f
commit
63d643da84
5 changed files with 135 additions and 0 deletions
10
tests/ui/typeck/issue-112252-ptr-arithmetics-help.fixed
Normal file
10
tests/ui/typeck/issue-112252-ptr-arithmetics-help.fixed
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
// run-rustfix
|
||||
|
||||
fn main() {
|
||||
let _ptr1: *const u32 = std::ptr::null();
|
||||
let _ptr2: *const u32 = std::ptr::null();
|
||||
let _a = _ptr1.wrapping_add(5); //~ ERROR cannot add
|
||||
let _b = _ptr1.wrapping_sub(5); //~ ERROR cannot subtract
|
||||
let _c = unsafe { _ptr2.offset_from(_ptr1) }; //~ ERROR cannot subtract
|
||||
let _d = _ptr1.wrapping_add(5); //~ ERROR cannot index
|
||||
}
|
||||
10
tests/ui/typeck/issue-112252-ptr-arithmetics-help.rs
Normal file
10
tests/ui/typeck/issue-112252-ptr-arithmetics-help.rs
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
// run-rustfix
|
||||
|
||||
fn main() {
|
||||
let _ptr1: *const u32 = std::ptr::null();
|
||||
let _ptr2: *const u32 = std::ptr::null();
|
||||
let _a = _ptr1 + 5; //~ ERROR cannot add
|
||||
let _b = _ptr1 - 5; //~ ERROR cannot subtract
|
||||
let _c = _ptr2 - _ptr1; //~ ERROR cannot subtract
|
||||
let _d = _ptr1[5]; //~ ERROR cannot index
|
||||
}
|
||||
54
tests/ui/typeck/issue-112252-ptr-arithmetics-help.stderr
Normal file
54
tests/ui/typeck/issue-112252-ptr-arithmetics-help.stderr
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
error[E0369]: cannot add `{integer}` to `*const u32`
|
||||
--> $DIR/issue-112252-ptr-arithmetics-help.rs:6:20
|
||||
|
|
||||
LL | let _a = _ptr1 + 5;
|
||||
| ----- ^ - {integer}
|
||||
| |
|
||||
| *const u32
|
||||
|
|
||||
help: consider using `wrapping_add` or `add` for pointer + {integer}
|
||||
|
|
||||
LL | let _a = _ptr1.wrapping_add(5);
|
||||
| ~~~~~~~~~~~~~~ +
|
||||
|
||||
error[E0369]: cannot subtract `{integer}` from `*const u32`
|
||||
--> $DIR/issue-112252-ptr-arithmetics-help.rs:7:20
|
||||
|
|
||||
LL | let _b = _ptr1 - 5;
|
||||
| ----- ^ - {integer}
|
||||
| |
|
||||
| *const u32
|
||||
|
|
||||
help: consider using `wrapping_sub` or `sub` for pointer - {integer}
|
||||
|
|
||||
LL | let _b = _ptr1.wrapping_sub(5);
|
||||
| ~~~~~~~~~~~~~~ +
|
||||
|
||||
error[E0369]: cannot subtract `*const u32` from `*const u32`
|
||||
--> $DIR/issue-112252-ptr-arithmetics-help.rs:8:20
|
||||
|
|
||||
LL | let _c = _ptr2 - _ptr1;
|
||||
| ----- ^ ----- *const u32
|
||||
| |
|
||||
| *const u32
|
||||
|
|
||||
help: consider using `offset_from` for pointer - pointer if the pointers point to the same allocation
|
||||
|
|
||||
LL | let _c = unsafe { _ptr2.offset_from(_ptr1) };
|
||||
| ++++++++ ~~~~~~~~~~~~~ +++
|
||||
|
||||
error[E0608]: cannot index into a value of type `*const u32`
|
||||
--> $DIR/issue-112252-ptr-arithmetics-help.rs:9:14
|
||||
|
|
||||
LL | let _d = _ptr1[5];
|
||||
| ^^^^^^^^
|
||||
|
|
||||
help: consider using `wrapping_add` or `add` for indexing into raw pointer
|
||||
|
|
||||
LL | let _d = _ptr1.wrapping_add(5);
|
||||
| ~~~~~~~~~~~~~~ ~
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0369, E0608.
|
||||
For more information about an error, try `rustc --explain E0369`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue