mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-26 11:59:49 +00:00
Correctly resolve crate name in use paths when import shadows itself
This commit is contained in:
parent
f04daf693a
commit
da74c66947
3 changed files with 31 additions and 3 deletions
|
@ -286,7 +286,7 @@ impl SourceAnalyzer {
|
|||
let ctx = body::LowerCtx::with_hygiene(db.upcast(), &hygiene);
|
||||
let hir_path = Path::from_src(path.clone(), &ctx)?;
|
||||
|
||||
// Case where path is a qualifier of another path, e.g. foo::bar::Baz where we
|
||||
// Case where path is a qualifier of another path, e.g. foo::bar::Baz where we are
|
||||
// trying to resolve foo::bar.
|
||||
if let Some(outer_path) = parent().and_then(ast::Path::cast) {
|
||||
if let Some(qualifier) = outer_path.qualifier() {
|
||||
|
@ -295,6 +295,15 @@ impl SourceAnalyzer {
|
|||
}
|
||||
}
|
||||
}
|
||||
// Case where path is a qualifier of a use tree, e.g. foo::bar::{Baz, Qux} where we are
|
||||
// trying to resolve foo::bar.
|
||||
if let Some(use_tree) = parent().and_then(ast::UseTree::cast) {
|
||||
if let Some(qualifier) = use_tree.path() {
|
||||
if path == &qualifier && use_tree.coloncolon_token().is_some() {
|
||||
return resolve_hir_path_qualifier(db, &self.resolver, &hir_path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resolve_hir_path_(db, &self.resolver, &hir_path, prefer_value_ns)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue