aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/nameres.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/nameres.rs')
-rw-r--r--crates/ra_hir/src/nameres.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/crates/ra_hir/src/nameres.rs b/crates/ra_hir/src/nameres.rs
index 7922e3f7e..be1cc76b6 100644
--- a/crates/ra_hir/src/nameres.rs
+++ b/crates/ra_hir/src/nameres.rs
@@ -382,6 +382,11 @@ impl CrateDefMap {
382 return ResolvePathResult::empty(ReachedFixedPoint::No); // extern crate declarations can add to the extern prelude 382 return ResolvePathResult::empty(ReachedFixedPoint::No); // extern crate declarations can add to the extern prelude
383 } 383 }
384 } 384 }
385 PathKind::Type => {
386 // This is handled in `infer::infer_path_expr`
387 // The result returned here does not matter
388 return ResolvePathResult::empty(ReachedFixedPoint::Yes);
389 }
385 }; 390 };
386 391
387 for (i, segment) in segments { 392 for (i, segment) in segments {
@@ -401,8 +406,11 @@ impl CrateDefMap {
401 curr_per_ns = match curr { 406 curr_per_ns = match curr {
402 ModuleDef::Module(module) => { 407 ModuleDef::Module(module) => {
403 if module.krate != self.krate { 408 if module.krate != self.krate {
404 let path = 409 let path = Path {
405 Path { segments: path.segments[i..].to_vec(), kind: PathKind::Self_ }; 410 segments: path.segments[i..].to_vec(),
411 kind: PathKind::Self_,
412 type_ref: None,
413 };
406 log::debug!("resolving {:?} in other crate", path); 414 log::debug!("resolving {:?} in other crate", path);
407 let defp_map = db.crate_def_map(module.krate); 415 let defp_map = db.crate_def_map(module.krate);
408 let (def, s) = defp_map.resolve_path(db, module.module_id, &path); 416 let (def, s) = defp_map.resolve_path(db, module.module_id, &path);