diff options
| author | yukang <moorekang@gmail.com> | 2024-02-17 17:54:06 +0800 |
|---|---|---|
| committer | yukang <moorekang@gmail.com> | 2024-02-25 11:29:13 +0800 |
| commit | 3bcef2dc1b145ebe32d317e331579fd4c20e0bd8 (patch) | |
| tree | c99235cf9b907ccba6cac89836fd076e5595d80d /compiler/rustc_resolve/src | |
| parent | 2ae1bb671183a072b54ed8ed39abfcd72990a3e7 (diff) | |
| download | rust-3bcef2dc1b145ebe32d317e331579fd4c20e0bd8.tar.gz rust-3bcef2dc1b145ebe32d317e331579fd4c20e0bd8.zip | |
Fix issues in suggesting importing extern crate paths
Diffstat (limited to 'compiler/rustc_resolve/src')
| -rw-r--r-- | compiler/rustc_resolve/src/diagnostics.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index d64a3b43aad..0b545ce6a89 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -1290,10 +1290,20 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { let mut path_segments = path_segments.clone(); path_segments.push(ast::PathSegment::from_ident(ident)); + let alias_import = if let NameBindingKind::Import { import, .. } = + name_binding.kind + && let ImportKind::ExternCrate { source: Some(_), .. } = import.kind + && import.parent_scope.expansion == parent_scope.expansion + { + true + } else { + false + }; + let is_extern_crate_that_also_appears_in_prelude = name_binding.is_extern_crate() && lookup_ident.span.at_least_rust_2018(); - if !is_extern_crate_that_also_appears_in_prelude { + if !is_extern_crate_that_also_appears_in_prelude || alias_import { // add the module to the lookup if seen_modules.insert(module.def_id()) { if via_import { &mut worklist_via_import } else { &mut worklist } |
