diff options
Diffstat (limited to 'crates/ra_hir_def/src/nameres/path_resolution.rs')
-rw-r--r-- | crates/ra_hir_def/src/nameres/path_resolution.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/crates/ra_hir_def/src/nameres/path_resolution.rs b/crates/ra_hir_def/src/nameres/path_resolution.rs index 42a75226b..aab4b1dd9 100644 --- a/crates/ra_hir_def/src/nameres/path_resolution.rs +++ b/crates/ra_hir_def/src/nameres/path_resolution.rs | |||
@@ -19,7 +19,7 @@ use crate::{ | |||
19 | nameres::{BuiltinShadowMode, CrateDefMap}, | 19 | nameres::{BuiltinShadowMode, CrateDefMap}, |
20 | path::{Path, PathKind}, | 20 | path::{Path, PathKind}, |
21 | per_ns::PerNs, | 21 | per_ns::PerNs, |
22 | AdtId, EnumVariantId, LocalModuleId, ModuleDefId, ModuleId, | 22 | AdtId, CrateId, EnumVariantId, LocalModuleId, ModuleDefId, ModuleId, |
23 | }; | 23 | }; |
24 | 24 | ||
25 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] | 25 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] |
@@ -39,19 +39,21 @@ pub(super) struct ResolvePathResult { | |||
39 | pub(super) resolved_def: PerNs, | 39 | pub(super) resolved_def: PerNs, |
40 | pub(super) segment_index: Option<usize>, | 40 | pub(super) segment_index: Option<usize>, |
41 | pub(super) reached_fixedpoint: ReachedFixedPoint, | 41 | pub(super) reached_fixedpoint: ReachedFixedPoint, |
42 | pub(super) krate: Option<CrateId>, | ||
42 | } | 43 | } |
43 | 44 | ||
44 | impl ResolvePathResult { | 45 | impl ResolvePathResult { |
45 | fn empty(reached_fixedpoint: ReachedFixedPoint) -> ResolvePathResult { | 46 | fn empty(reached_fixedpoint: ReachedFixedPoint) -> ResolvePathResult { |
46 | ResolvePathResult::with(PerNs::none(), reached_fixedpoint, None) | 47 | ResolvePathResult::with(PerNs::none(), reached_fixedpoint, None, None) |
47 | } | 48 | } |
48 | 49 | ||
49 | fn with( | 50 | fn with( |
50 | resolved_def: PerNs, | 51 | resolved_def: PerNs, |
51 | reached_fixedpoint: ReachedFixedPoint, | 52 | reached_fixedpoint: ReachedFixedPoint, |
52 | segment_index: Option<usize>, | 53 | segment_index: Option<usize>, |
54 | krate: Option<CrateId>, | ||
53 | ) -> ResolvePathResult { | 55 | ) -> ResolvePathResult { |
54 | ResolvePathResult { resolved_def, reached_fixedpoint, segment_index } | 56 | ResolvePathResult { resolved_def, reached_fixedpoint, segment_index, krate } |
55 | } | 57 | } |
56 | } | 58 | } |
57 | 59 | ||
@@ -175,6 +177,7 @@ impl CrateDefMap { | |||
175 | def, | 177 | def, |
176 | ReachedFixedPoint::Yes, | 178 | ReachedFixedPoint::Yes, |
177 | s.map(|s| s + i), | 179 | s.map(|s| s + i), |
180 | Some(module.krate), | ||
178 | ); | 181 | ); |
179 | } | 182 | } |
180 | 183 | ||
@@ -201,6 +204,7 @@ impl CrateDefMap { | |||
201 | PerNs::types(e.into()), | 204 | PerNs::types(e.into()), |
202 | ReachedFixedPoint::Yes, | 205 | ReachedFixedPoint::Yes, |
203 | Some(i), | 206 | Some(i), |
207 | Some(self.krate), | ||
204 | ); | 208 | ); |
205 | } | 209 | } |
206 | } | 210 | } |
@@ -218,12 +222,13 @@ impl CrateDefMap { | |||
218 | PerNs::types(s), | 222 | PerNs::types(s), |
219 | ReachedFixedPoint::Yes, | 223 | ReachedFixedPoint::Yes, |
220 | Some(i), | 224 | Some(i), |
225 | Some(self.krate), | ||
221 | ); | 226 | ); |
222 | } | 227 | } |
223 | }; | 228 | }; |
224 | } | 229 | } |
225 | 230 | ||
226 | ResolvePathResult::with(curr_per_ns, ReachedFixedPoint::Yes, None) | 231 | ResolvePathResult::with(curr_per_ns, ReachedFixedPoint::Yes, None, Some(self.krate)) |
227 | } | 232 | } |
228 | 233 | ||
229 | fn resolve_name_in_module( | 234 | fn resolve_name_in_module( |