diff options
author | Aleksey Kladov <[email protected]> | 2018-12-04 20:01:53 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-12-04 20:01:53 +0000 |
commit | 947e3350e045aab1db9b232542425a3faa856907 (patch) | |
tree | c2e047aa204c2a1177b85b9736e9be572ae778a6 /crates/ra_hir/src/module/nameres.rs | |
parent | 45fce9034909f2f0c5f6ac70eca7cf87ec3db856 (diff) |
module-scoped defloc
Diffstat (limited to 'crates/ra_hir/src/module/nameres.rs')
-rw-r--r-- | crates/ra_hir/src/module/nameres.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/crates/ra_hir/src/module/nameres.rs b/crates/ra_hir/src/module/nameres.rs index 8529e16b3..c2b380a80 100644 --- a/crates/ra_hir/src/module/nameres.rs +++ b/crates/ra_hir/src/module/nameres.rs | |||
@@ -28,7 +28,7 @@ use ra_db::SourceRootId; | |||
28 | 28 | ||
29 | use crate::{ | 29 | use crate::{ |
30 | Cancelable, FileId, | 30 | Cancelable, FileId, |
31 | DefId, DefLoc, | 31 | DefId, DefLoc, DefKind, |
32 | SourceItemId, SourceFileItemId, SourceFileItems, | 32 | SourceItemId, SourceFileItemId, SourceFileItems, |
33 | Path, PathKind, | 33 | Path, PathKind, |
34 | HirDatabase, | 34 | HirDatabase, |
@@ -247,7 +247,10 @@ where | |||
247 | // handle submodules separatelly | 247 | // handle submodules separatelly |
248 | continue; | 248 | continue; |
249 | } | 249 | } |
250 | let def_loc = DefLoc::Item { | 250 | let def_loc = DefLoc { |
251 | kind: DefKind::Item, | ||
252 | source_root_id: self.source_root, | ||
253 | module_id, | ||
251 | source_item_id: SourceItemId { | 254 | source_item_id: SourceItemId { |
252 | file_id, | 255 | file_id, |
253 | item_id: item.id, | 256 | item_id: item.id, |
@@ -261,10 +264,12 @@ where | |||
261 | module_items.items.insert(item.name.clone(), resolution); | 264 | module_items.items.insert(item.name.clone(), resolution); |
262 | } | 265 | } |
263 | 266 | ||
264 | for (name, mod_id) in module_id.children(&self.module_tree) { | 267 | for (name, module_id) in module_id.children(&self.module_tree) { |
265 | let def_loc = DefLoc::Module { | 268 | let def_loc = DefLoc { |
266 | id: mod_id, | 269 | kind: DefKind::Module, |
267 | source_root: self.source_root, | 270 | source_root_id: self.source_root, |
271 | module_id, | ||
272 | source_item_id: module_id.source(&self.module_tree).0, | ||
268 | }; | 273 | }; |
269 | let def_id = def_loc.id(self.db); | 274 | let def_id = def_loc.id(self.db); |
270 | let resolution = Resolution { | 275 | let resolution = Resolution { |
@@ -316,7 +321,11 @@ where | |||
316 | 321 | ||
317 | if !is_last { | 322 | if !is_last { |
318 | curr = match def_id.loc(self.db) { | 323 | curr = match def_id.loc(self.db) { |
319 | DefLoc::Module { id, .. } => id, | 324 | DefLoc { |
325 | kind: DefKind::Module, | ||
326 | module_id, | ||
327 | .. | ||
328 | } => module_id, | ||
320 | _ => return, | 329 | _ => return, |
321 | } | 330 | } |
322 | } else { | 331 | } else { |