add a suggestion about undeclared alloc module

This commit is contained in:
Takayuki Maeda 2021-11-03 01:44:01 +09:00
parent ff0e14829e
commit acb9f9ba38
4 changed files with 39 additions and 9 deletions

View File

@ -420,6 +420,10 @@ impl<'a> Resolver<'a> {
err.span_label(span, label);
if let Some((suggestions, msg, applicability)) = suggestion {
if suggestions.is_empty() {
err.help(&msg);
return err;
}
err.multipart_suggestion(&msg, suggestions, applicability);
}

View File

@ -2523,19 +2523,29 @@ enum FindBindingResult<'a> {
} else {
(
format!("use of undeclared crate or module `{}`", ident),
self.find_similarly_named_module_or_crate(
ident.name,
&parent_scope.module,
)
.map(|sugg| {
(
vec![(ident.span, sugg.to_string())],
if ident.name == sym::alloc {
Some((
vec![],
String::from(
"there is a crate or module with a similar name",
"add `extern crate alloc` to use the builtin `alloc` module",
),
Applicability::MaybeIncorrect,
))
} else {
self.find_similarly_named_module_or_crate(
ident.name,
&parent_scope.module,
)
}),
.map(|sugg| {
(
vec![(ident.span, sugg.to_string())],
String::from(
"there is a crate or module with a similar name",
),
Applicability::MaybeIncorrect,
)
})
},
)
}
} else {

View File

@ -0,0 +1,5 @@
// edition:2018
use alloc::rc::Rc; //~ ERROR failed to resolve: use of undeclared crate or module `alloc`
fn main() {}

View File

@ -0,0 +1,11 @@
error[E0433]: failed to resolve: use of undeclared crate or module `alloc`
--> $DIR/undeclared-module-alloc.rs:3:5
|
LL | use alloc::rc::Rc;
| ^^^^^ use of undeclared crate or module `alloc`
|
= help: add `extern crate alloc` to use the builtin `alloc` module
error: aborting due to previous error
For more information about this error, try `rustc --explain E0433`.