Remove invalid help diagnostics for const pointer
This commit is contained in:
parent
03c2100ded
commit
7ff71e5fb4
@ -1146,6 +1146,12 @@ impl<'infcx, 'tcx> MirBorrowckCtxt<'_, '_, 'infcx, 'tcx> {
|
|||||||
}
|
}
|
||||||
// don't create labels for compiler-generated spans
|
// don't create labels for compiler-generated spans
|
||||||
Some(_) => None,
|
Some(_) => None,
|
||||||
|
// don't create labels for the span not from user's code
|
||||||
|
None if opt_assignment_rhs_span
|
||||||
|
.is_some_and(|span| self.infcx.tcx.sess.source_map().is_imported(span)) =>
|
||||||
|
{
|
||||||
|
None
|
||||||
|
}
|
||||||
None => {
|
None => {
|
||||||
let (has_sugg, decl_span, sugg) = if name != kw::SelfLower {
|
let (has_sugg, decl_span, sugg) = if name != kw::SelfLower {
|
||||||
suggest_ampmut(
|
suggest_ampmut(
|
||||||
@ -1198,18 +1204,21 @@ impl<'infcx, 'tcx> MirBorrowckCtxt<'_, '_, 'infcx, 'tcx> {
|
|||||||
sugg.push(s);
|
sugg.push(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
err.multipart_suggestion_verbose(
|
if sugg.iter().all(|(span, _)| !self.infcx.tcx.sess.source_map().is_imported(*span))
|
||||||
format!(
|
{
|
||||||
"consider changing this to be a mutable {pointer_desc}{}",
|
err.multipart_suggestion_verbose(
|
||||||
if is_trait_sig {
|
format!(
|
||||||
" in the `impl` method and the `trait` definition"
|
"consider changing this to be a mutable {pointer_desc}{}",
|
||||||
} else {
|
if is_trait_sig {
|
||||||
""
|
" in the `impl` method and the `trait` definition"
|
||||||
}
|
} else {
|
||||||
),
|
""
|
||||||
sugg,
|
}
|
||||||
Applicability::MachineApplicable,
|
),
|
||||||
);
|
sugg,
|
||||||
|
Applicability::MachineApplicable,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Some((false, err_label_span, message, _)) => {
|
Some((false, err_label_span, message, _)) => {
|
||||||
let def_id = self.body.source.def_id();
|
let def_id = self.body.source.def_id();
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
fn main() {
|
||||||
|
let val = 2;
|
||||||
|
let ptr = std::ptr::addr_of!(val);
|
||||||
|
unsafe {
|
||||||
|
*ptr = 3; //~ ERROR cannot assign to `*ptr`, which is behind a `*const` pointer
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
error[E0594]: cannot assign to `*ptr`, which is behind a `*const` pointer
|
||||||
|
--> $DIR/dont_suggest_raw_pointer_syntax-issue-127562.rs:5:9
|
||||||
|
|
|
||||||
|
LL | *ptr = 3;
|
||||||
|
| ^^^^^^^^ `ptr` is a `*const` pointer, so the data it refers to cannot be written
|
||||||
|
|
||||||
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0594`.
|
Loading…
x
Reference in New Issue
Block a user