Rollup merge of #102284 - compiler-errors:missing-type-in-raw-ptr, r=davidtwco
Structured suggestion for missing `mut`/`const` in raw pointer Fixes #102261
This commit is contained in:
commit
8b635cba1d
@ -397,10 +397,13 @@ impl<'a> Parser<'a> {
|
||||
fn parse_ty_ptr(&mut self) -> PResult<'a, TyKind> {
|
||||
let mutbl = self.parse_const_or_mut().unwrap_or_else(|| {
|
||||
let span = self.prev_token.span;
|
||||
let msg = "expected mut or const in raw pointer type";
|
||||
self.struct_span_err(span, msg)
|
||||
.span_label(span, msg)
|
||||
.help("use `*mut T` or `*const T` as appropriate")
|
||||
self.struct_span_err(span, "expected `mut` or `const` keyword in raw pointer type")
|
||||
.span_suggestions(
|
||||
span.shrink_to_hi(),
|
||||
"add `mut` or `const` here",
|
||||
["mut ".to_string(), "const ".to_string()].into_iter(),
|
||||
Applicability::HasPlaceholders,
|
||||
)
|
||||
.emit();
|
||||
Mutability::Not
|
||||
});
|
||||
|
@ -1,5 +1,5 @@
|
||||
fn foo(_: *()) {
|
||||
//~^ ERROR expected mut or const in raw pointer type
|
||||
//~^ ERROR expected `mut` or `const` keyword in raw pointer type
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
@ -1,10 +1,15 @@
|
||||
error: expected mut or const in raw pointer type
|
||||
error: expected `mut` or `const` keyword in raw pointer type
|
||||
--> $DIR/bad-pointer-type.rs:1:11
|
||||
|
|
||||
LL | fn foo(_: *()) {
|
||||
| ^ expected mut or const in raw pointer type
|
||||
| ^
|
||||
|
|
||||
= help: use `*mut T` or `*const T` as appropriate
|
||||
help: add `mut` or `const` here
|
||||
|
|
||||
LL | fn foo(_: *const ()) {
|
||||
| +++++
|
||||
LL | fn foo(_: *mut ()) {
|
||||
| +++
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
7
src/test/ui/parser/double-pointer.rs
Normal file
7
src/test/ui/parser/double-pointer.rs
Normal file
@ -0,0 +1,7 @@
|
||||
fn main() {
|
||||
let x: i32 = 5;
|
||||
let ptr: *const i32 = &x;
|
||||
let dptr: **const i32 = &ptr;
|
||||
//~^ ERROR expected `mut` or `const` keyword in raw pointer type
|
||||
//~| HELP add `mut` or `const` here
|
||||
}
|
15
src/test/ui/parser/double-pointer.stderr
Normal file
15
src/test/ui/parser/double-pointer.stderr
Normal file
@ -0,0 +1,15 @@
|
||||
error: expected `mut` or `const` keyword in raw pointer type
|
||||
--> $DIR/double-pointer.rs:4:15
|
||||
|
|
||||
LL | let dptr: **const i32 = &ptr;
|
||||
| ^
|
||||
|
|
||||
help: add `mut` or `const` here
|
||||
|
|
||||
LL | let dptr: *const *const i32 = &ptr;
|
||||
| +++++
|
||||
LL | let dptr: *mut *const i32 = &ptr;
|
||||
| +++
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
x
Reference in New Issue
Block a user