about summary refs log tree commit diff
path: root/compiler/rustc_resolve/src
diff options
context:
space:
mode:
authoryukang <moorekang@gmail.com>2024-02-17 17:54:06 +0800
committeryukang <moorekang@gmail.com>2024-02-25 11:29:13 +0800
commit3bcef2dc1b145ebe32d317e331579fd4c20e0bd8 (patch)
treec99235cf9b907ccba6cac89836fd076e5595d80d /compiler/rustc_resolve/src
parent2ae1bb671183a072b54ed8ed39abfcd72990a3e7 (diff)
downloadrust-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.rs12
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 }