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); err.span_label(span, label);
if let Some((suggestions, msg, applicability)) = suggestion { if let Some((suggestions, msg, applicability)) = suggestion {
if suggestions.is_empty() {
err.help(&msg);
return err;
}
err.multipart_suggestion(&msg, suggestions, applicability); err.multipart_suggestion(&msg, suggestions, applicability);
} }

View file

@ -2523,6 +2523,15 @@ impl<'a> Resolver<'a> {
} else { } else {
( (
format!("use of undeclared crate or module `{}`", ident), format!("use of undeclared crate or module `{}`", ident),
if ident.name == sym::alloc {
Some((
vec![],
String::from(
"add `extern crate alloc` to use the builtin `alloc` module",
),
Applicability::MaybeIncorrect,
))
} else {
self.find_similarly_named_module_or_crate( self.find_similarly_named_module_or_crate(
ident.name, ident.name,
&parent_scope.module, &parent_scope.module,
@ -2535,7 +2544,8 @@ impl<'a> Resolver<'a> {
), ),
Applicability::MaybeIncorrect, Applicability::MaybeIncorrect,
) )
}), })
},
) )
} }
} else { } 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`.