aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/descriptors/module/imp.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_analysis/src/descriptors/module/imp.rs')
-rw-r--r--crates/ra_analysis/src/descriptors/module/imp.rs16
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 @@
1use std::sync::Arc; 1use std::sync::Arc;
2 2
3use ra_syntax::{ 3use ra_syntax::{
4 ast::{self, NameOwner}, 4 ast::{self, ModuleItemOwner, NameOwner},
5 SmolStr, 5 SmolStr,
6}; 6};
7use relative_path::RelativePathBuf; 7use relative_path::RelativePathBuf;
@@ -15,7 +15,8 @@ use crate::{
15}; 15};
16 16
17use super::{ 17use 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
21pub(crate) fn submodules( 22pub(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