Use more targeted suggestion when confusing i8 with std::i8
This commit is contained in:
parent
357bc27904
commit
8542dd02a8
3 changed files with 21 additions and 26 deletions
|
@ -1575,18 +1575,17 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
||||||
name: Symbol,
|
name: Symbol,
|
||||||
) -> ErrorGuaranteed {
|
) -> ErrorGuaranteed {
|
||||||
let mut err = struct_span_err!(self.tcx().sess, span, E0223, "ambiguous associated type");
|
let mut err = struct_span_err!(self.tcx().sess, span, E0223, "ambiguous associated type");
|
||||||
if let (true, Ok(snippet)) = (
|
if self
|
||||||
self.tcx()
|
.tcx()
|
||||||
.resolutions(())
|
.resolutions(())
|
||||||
.confused_type_with_std_module
|
.confused_type_with_std_module
|
||||||
.keys()
|
.keys()
|
||||||
.any(|full_span| full_span.contains(span)),
|
.any(|full_span| full_span.contains(span))
|
||||||
self.tcx().sess.source_map().span_to_snippet(span),
|
{
|
||||||
) {
|
|
||||||
err.span_suggestion(
|
err.span_suggestion(
|
||||||
span,
|
span.shrink_to_lo(),
|
||||||
"you are looking for the module in `std`, not the primitive type",
|
"you are looking for the module in `std`, not the primitive type",
|
||||||
format!("std::{}", snippet),
|
"std::".to_string(),
|
||||||
Applicability::MachineApplicable,
|
Applicability::MachineApplicable,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -327,26 +327,22 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if let Some(span) = tcx.resolutions(()).confused_type_with_std_module.get(&span) {
|
if let Some(span) = tcx.resolutions(()).confused_type_with_std_module.get(&span) {
|
||||||
if let Ok(snippet) = tcx.sess.source_map().span_to_snippet(*span) {
|
err.span_suggestion(
|
||||||
err.span_suggestion(
|
span.shrink_to_lo(),
|
||||||
*span,
|
"you are looking for the module in `std`, not the primitive type",
|
||||||
"you are looking for the module in `std`, \
|
"std::".to_string(),
|
||||||
not the primitive type",
|
Applicability::MachineApplicable,
|
||||||
format!("std::{}", snippet),
|
);
|
||||||
Applicability::MachineApplicable,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if let ty::RawPtr(_) = &actual.kind() {
|
if let ty::RawPtr(_) = &actual.kind() {
|
||||||
err.note(
|
err.note(
|
||||||
"try using `<*const T>::as_ref()` to get a reference to the \
|
"try using `<*const T>::as_ref()` to get a reference to the \
|
||||||
type behind the pointer: https://doc.rust-lang.org/std/\
|
type behind the pointer: https://doc.rust-lang.org/std/\
|
||||||
primitive.pointer.html#method.as_ref",
|
primitive.pointer.html#method.as_ref",
|
||||||
);
|
);
|
||||||
err.note(
|
err.note(
|
||||||
"using `<*const T>::as_ref()` on a pointer \
|
"using `<*const T>::as_ref()` on a pointer which is unaligned or points \
|
||||||
which is unaligned or points to invalid \
|
to invalid or uninitialized memory is undefined behavior",
|
||||||
or uninitialized memory is undefined behavior",
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ LL | let pi = f32::consts::PI;
|
||||||
help: you are looking for the module in `std`, not the primitive type
|
help: you are looking for the module in `std`, not the primitive type
|
||||||
|
|
|
|
||||||
LL | let pi = std::f32::consts::PI;
|
LL | let pi = std::f32::consts::PI;
|
||||||
| ~~~~~~~~~~~~~~~~
|
| +++++
|
||||||
|
|
||||||
error[E0599]: no function or associated item named `from_utf8` found for type `str` in the current scope
|
error[E0599]: no function or associated item named `from_utf8` found for type `str` in the current scope
|
||||||
--> $DIR/suggest-std-when-using-type.rs:5:14
|
--> $DIR/suggest-std-when-using-type.rs:5:14
|
||||||
|
@ -18,7 +18,7 @@ LL | str::from_utf8(bytes)
|
||||||
help: you are looking for the module in `std`, not the primitive type
|
help: you are looking for the module in `std`, not the primitive type
|
||||||
|
|
|
|
||||||
LL | std::str::from_utf8(bytes)
|
LL | std::str::from_utf8(bytes)
|
||||||
| ~~~~~~~~~~~~~~~~~~~
|
| +++++
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue