diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-06-01 17:11:05 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-01 17:11:05 +0200 |
| commit | daedae7b233fe2e489bed5e586b013c2ce51f546 (patch) | |
| tree | c63833d8e2ab96a82d16997bd2db20f6cadb6be7 /compiler/rustc_resolve/src | |
| parent | 7d4cf710e2678d31fd899c452e1d4baf48eb8a86 (diff) | |
| parent | b2480a0251465ddda9a45fc375197c6fbad4f764 (diff) | |
| download | rust-daedae7b233fe2e489bed5e586b013c2ce51f546.tar.gz rust-daedae7b233fe2e489bed5e586b013c2ce51f546.zip | |
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``
Diffstat (limited to 'compiler/rustc_resolve/src')
| -rw-r--r-- | compiler/rustc_resolve/src/diagnostics.rs | 15 | ||||
| -rw-r--r-- | compiler/rustc_resolve/src/imports.rs | 4 |
2 files changed, 16 insertions, 3 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index c199cff2038..b1fe418f687 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -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); diff --git a/compiler/rustc_resolve/src/imports.rs b/compiler/rustc_resolve/src/imports.rs index a8c8c674d2d..de83a3a5932 100644 --- a/compiler/rustc_resolve/src/imports.rs +++ b/compiler/rustc_resolve/src/imports.rs @@ -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); } } |
