1
Fork 0

Rollup merge of #97264 - TaKO8Ki:suggest-extern-crate-when-failing-to-resolve-use-crate, r=estebank

Suggest `extern crate foo` when failing to resolve `use foo`

closes #97095

r? ``@estebank``
This commit is contained in:
Matthias Krüger 2022-06-01 17:11:05 +02:00 committed by GitHub
commit daedae7b23
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 94 additions and 8 deletions

View file

@ -1839,9 +1839,18 @@ impl<'a> Resolver<'a> {
)),
)
} else if self.session.edition() == Edition::Edition2015 {
(format!("maybe a missing crate `{}`?", ident), None)
(
format!("maybe a missing crate `{ident}`?"),
Some((
vec![],
format!(
"consider adding `extern crate {ident}` to use the `{ident}` crate"
),
Applicability::MaybeIncorrect,
)),
)
} else {
(format!("could not find `{}` in the crate root", ident), None)
(format!("could not find `{ident}` in the crate root"), None)
}
} else if i > 0 {
let parent = path[i - 1].ident.name;
@ -1852,7 +1861,7 @@ impl<'a> Resolver<'a> {
"the list of imported crates".to_owned()
}
kw::PathRoot | kw::Crate => "the crate root".to_owned(),
_ => format!("`{}`", parent),
_ => format!("`{parent}`"),
};
let mut msg = format!("could not find `{}` in {}", ident, parent);

View file

@ -475,6 +475,10 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
}
if let Some((suggestions, msg, applicability)) = err.suggestion {
if suggestions.is_empty() {
diag.help(&msg);
continue;
}
diag.multipart_suggestion(&msg, suggestions, applicability);
}
}