-
Notifications
You must be signed in to change notification settings - Fork 12.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Suggest null ptr if 0 is given as a raw ptr arg
- Loading branch information
1 parent
50d3ba5
commit 3296729
Showing
5 changed files
with
190 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// run-rustfix | ||
|
||
// Suggest providing a std::ptr::null{,_mut}() to a function that takes in a raw | ||
// pointer if a literal 0 was provided by the user. | ||
|
||
extern "C" { | ||
fn foo(ptr: *const u8); | ||
|
||
fn foo_mut(ptr: *mut u8); | ||
|
||
fn usize(ptr: *const usize); | ||
|
||
fn usize_mut(ptr: *mut usize); | ||
} | ||
|
||
fn main() { | ||
unsafe { | ||
foo(std::ptr::null()); | ||
//~^ mismatched types [E0308] | ||
//~| if you meant to create a null pointer, use `std::ptr::null()` | ||
foo_mut(std::ptr::null_mut()); | ||
//~^ mismatched types [E0308] | ||
//~| if you meant to create a null pointer, use `std::ptr::null_mut()` | ||
usize(std::ptr::null()); | ||
//~^ mismatched types [E0308] | ||
//~| if you meant to create a null pointer, use `std::ptr::null()` | ||
usize_mut(std::ptr::null_mut()); | ||
//~^ mismatched types [E0308] | ||
//~| if you meant to create a null pointer, use `std::ptr::null_mut()` | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// run-rustfix | ||
|
||
// Suggest providing a std::ptr::null{,_mut}() to a function that takes in a raw | ||
// pointer if a literal 0 was provided by the user. | ||
|
||
extern "C" { | ||
fn foo(ptr: *const u8); | ||
|
||
fn foo_mut(ptr: *mut u8); | ||
|
||
fn usize(ptr: *const usize); | ||
|
||
fn usize_mut(ptr: *mut usize); | ||
} | ||
|
||
fn main() { | ||
unsafe { | ||
foo(0); | ||
//~^ mismatched types [E0308] | ||
//~| if you meant to create a null pointer, use `std::ptr::null()` | ||
foo_mut(0); | ||
//~^ mismatched types [E0308] | ||
//~| if you meant to create a null pointer, use `std::ptr::null_mut()` | ||
usize(0); | ||
//~^ mismatched types [E0308] | ||
//~| if you meant to create a null pointer, use `std::ptr::null()` | ||
usize_mut(0); | ||
//~^ mismatched types [E0308] | ||
//~| if you meant to create a null pointer, use `std::ptr::null_mut()` | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
error[E0308]: mismatched types | ||
--> $DIR/suggest-null-ptr.rs:18:13 | ||
| | ||
LL | foo(0); | ||
| --- ^ expected `*const u8`, found `usize` | ||
| | | ||
| arguments to this function are incorrect | ||
| | ||
= note: expected raw pointer `*const u8` | ||
found type `usize` | ||
note: function defined here | ||
--> $DIR/suggest-null-ptr.rs:7:8 | ||
| | ||
LL | fn foo(ptr: *const u8); | ||
| ^^^ | ||
help: if you meant to create a null pointer, use `std::ptr::null()` | ||
| | ||
LL | foo(std::ptr::null()); | ||
| ~~~~~~~~~~~~~~~~ | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/suggest-null-ptr.rs:21:17 | ||
| | ||
LL | foo_mut(0); | ||
| ------- ^ expected `*mut u8`, found `usize` | ||
| | | ||
| arguments to this function are incorrect | ||
| | ||
= note: expected raw pointer `*mut u8` | ||
found type `usize` | ||
note: function defined here | ||
--> $DIR/suggest-null-ptr.rs:9:8 | ||
| | ||
LL | fn foo_mut(ptr: *mut u8); | ||
| ^^^^^^^ | ||
help: if you meant to create a null pointer, use `std::ptr::null_mut()` | ||
| | ||
LL | foo_mut(std::ptr::null_mut()); | ||
| ~~~~~~~~~~~~~~~~~~~~ | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/suggest-null-ptr.rs:24:15 | ||
| | ||
LL | usize(0); | ||
| ----- ^ expected `*const usize`, found `usize` | ||
| | | ||
| arguments to this function are incorrect | ||
| | ||
= note: expected raw pointer `*const usize` | ||
found type `usize` | ||
note: function defined here | ||
--> $DIR/suggest-null-ptr.rs:11:8 | ||
| | ||
LL | fn usize(ptr: *const usize); | ||
| ^^^^^ | ||
help: if you meant to create a null pointer, use `std::ptr::null()` | ||
| | ||
LL | usize(std::ptr::null()); | ||
| ~~~~~~~~~~~~~~~~ | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/suggest-null-ptr.rs:27:19 | ||
| | ||
LL | usize_mut(0); | ||
| --------- ^ expected `*mut usize`, found `usize` | ||
| | | ||
| arguments to this function are incorrect | ||
| | ||
= note: expected raw pointer `*mut usize` | ||
found type `usize` | ||
note: function defined here | ||
--> $DIR/suggest-null-ptr.rs:13:8 | ||
| | ||
LL | fn usize_mut(ptr: *mut usize); | ||
| ^^^^^^^^^ | ||
help: if you meant to create a null pointer, use `std::ptr::null_mut()` | ||
| | ||
LL | usize_mut(std::ptr::null_mut()); | ||
| ~~~~~~~~~~~~~~~~~~~~ | ||
|
||
error: aborting due to 4 previous errors | ||
|
||
For more information about this error, try `rustc --explain E0308`. |