diff options
author | uHOOCCOOHu <[email protected]> | 2019-09-11 19:01:07 +0100 |
---|---|---|
committer | uHOOCCOOHu <[email protected]> | 2019-09-15 12:40:32 +0100 |
commit | 4926bed42680d329f906be93450bec6b2ba0e99b (patch) | |
tree | 455c0bc9d839a18fffda6d018bf41d1c58ebfa52 /crates/ra_hir/src/nameres.rs | |
parent | 2d79a1ad83cc39075c7c9e3230973013c8c58b17 (diff) |
Support path starting with a type
Diffstat (limited to 'crates/ra_hir/src/nameres.rs')
-rw-r--r-- | crates/ra_hir/src/nameres.rs | 12 |
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); |