diff options
Diffstat (limited to 'crates/ra_analysis/src/descriptors/module/imp.rs')
-rw-r--r-- | crates/ra_analysis/src/descriptors/module/imp.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/crates/ra_analysis/src/descriptors/module/imp.rs b/crates/ra_analysis/src/descriptors/module/imp.rs index 22dbe7184..3a010ecf5 100644 --- a/crates/ra_analysis/src/descriptors/module/imp.rs +++ b/crates/ra_analysis/src/descriptors/module/imp.rs | |||
@@ -1,7 +1,7 @@ | |||
1 | use std::sync::Arc; | 1 | use std::sync::Arc; |
2 | 2 | ||
3 | use ra_syntax::{ | 3 | use ra_syntax::{ |
4 | ast::{self, NameOwner}, | 4 | ast::{self, ModuleItemOwner, NameOwner}, |
5 | SmolStr, | 5 | SmolStr, |
6 | }; | 6 | }; |
7 | use relative_path::RelativePathBuf; | 7 | use relative_path::RelativePathBuf; |
@@ -15,7 +15,8 @@ use crate::{ | |||
15 | }; | 15 | }; |
16 | 16 | ||
17 | use super::{ | 17 | use super::{ |
18 | LinkData, LinkId, ModuleData, ModuleId, ModuleScope, ModuleSource, ModuleTree, Problem, | 18 | LinkData, LinkId, ModuleData, ModuleId, ModuleScope, ModuleSource, ModuleSourceNode, |
19 | ModuleTree, Problem, | ||
19 | }; | 20 | }; |
20 | 21 | ||
21 | pub(crate) fn submodules( | 22 | pub(crate) fn submodules( |
@@ -45,9 +46,14 @@ pub(crate) fn module_scope( | |||
45 | module_id: ModuleId, | 46 | module_id: ModuleId, |
46 | ) -> Cancelable<Arc<ModuleScope>> { | 47 | ) -> Cancelable<Arc<ModuleScope>> { |
47 | let tree = db.module_tree(source_root_id)?; | 48 | let tree = db.module_tree(source_root_id)?; |
48 | let ModuleSource::File(file_id) = module_id.source(&tree); | 49 | let source = module_id.source(&tree).resolve(db); |
49 | let syntax = db.file_syntax(file_id); | 50 | let res = match source { |
50 | let res = ModuleScope::new(&syntax); | 51 | ModuleSourceNode::Root(root) => ModuleScope::new(root.ast().items()), |
52 | ModuleSourceNode::Inline(inline) => match inline.ast().item_list() { | ||
53 | Some(items) => ModuleScope::new(items.items()), | ||
54 | None => ModuleScope::new(std::iter::empty()), | ||
55 | }, | ||
56 | }; | ||
51 | Ok(Arc::new(res)) | 57 | Ok(Arc::new(res)) |
52 | } | 58 | } |
53 | 59 | ||