From 223fd2979c277cf402e4876d0e9a69257702f731 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 1 Nov 2018 00:15:11 +0300 Subject: Introduce ModuleSource --- crates/ra_analysis/src/descriptors/module/imp.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'crates/ra_analysis/src/descriptors/module/imp.rs') diff --git a/crates/ra_analysis/src/descriptors/module/imp.rs b/crates/ra_analysis/src/descriptors/module/imp.rs index 1c102f4e5..22dbe7184 100644 --- a/crates/ra_analysis/src/descriptors/module/imp.rs +++ b/crates/ra_analysis/src/descriptors/module/imp.rs @@ -14,7 +14,9 @@ use crate::{ Cancelable, FileId, FileResolverImp, }; -use super::{LinkData, LinkId, ModuleData, ModuleId, ModuleScope, ModuleTree, Problem}; +use super::{ + LinkData, LinkId, ModuleData, ModuleId, ModuleScope, ModuleSource, ModuleTree, Problem, +}; pub(crate) fn submodules( db: &impl DescriptorDatabase, @@ -43,7 +45,7 @@ pub(crate) fn module_scope( module_id: ModuleId, ) -> Cancelable> { let tree = db.module_tree(source_root_id)?; - let file_id = module_id.file_id(&tree); + let ModuleSource::File(file_id) = module_id.source(&tree); let syntax = db.file_syntax(file_id); let res = ModuleScope::new(&syntax); Ok(Arc::new(res)) @@ -106,7 +108,7 @@ fn build_subtree( ) -> Cancelable { visited.insert(file_id); let id = tree.push_mod(ModuleData { - file_id, + source: ModuleSource::File(file_id), parent, children: Vec::new(), }); -- cgit v1.2.3 From f2b654fd443ce1a0a31a9eaf1a1c25e911d0001a Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 1 Nov 2018 00:50:17 +0300 Subject: Add inline source --- crates/ra_analysis/src/descriptors/module/imp.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'crates/ra_analysis/src/descriptors/module/imp.rs') 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 @@ use std::sync::Arc; use ra_syntax::{ - ast::{self, NameOwner}, + ast::{self, ModuleItemOwner, NameOwner}, SmolStr, }; use relative_path::RelativePathBuf; @@ -15,7 +15,8 @@ use crate::{ }; use super::{ - LinkData, LinkId, ModuleData, ModuleId, ModuleScope, ModuleSource, ModuleTree, Problem, + LinkData, LinkId, ModuleData, ModuleId, ModuleScope, ModuleSource, ModuleSourceNode, + ModuleTree, Problem, }; pub(crate) fn submodules( @@ -45,9 +46,14 @@ pub(crate) fn module_scope( module_id: ModuleId, ) -> Cancelable> { let tree = db.module_tree(source_root_id)?; - let ModuleSource::File(file_id) = module_id.source(&tree); - let syntax = db.file_syntax(file_id); - let res = ModuleScope::new(&syntax); + let source = module_id.source(&tree).resolve(db); + let res = match source { + ModuleSourceNode::Root(root) => ModuleScope::new(root.ast().items()), + ModuleSourceNode::Inline(inline) => match inline.ast().item_list() { + Some(items) => ModuleScope::new(items.items()), + None => ModuleScope::new(std::iter::empty()), + }, + }; Ok(Arc::new(res)) } -- cgit v1.2.3