aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/descriptors/module/imp.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-10-30 23:08:54 +0000
committerAleksey Kladov <[email protected]>2018-10-30 23:08:54 +0000
commitfbbee537228538f448a335bb0b2dabec2b3d443e (patch)
treedb676e2c84585c13179e0116b018a3e67b550190 /crates/ra_analysis/src/descriptors/module/imp.rs
parentd10214581e18a3c98760ecf8ebbd27aaf48ec9ae (diff)
Add ModuleScope as a query
This is a first step towards queryifing completion and resolve. Some code currently duplicates ra_editor: the plan is to move all completion from ra_editor, but it'll take more than one commit.
Diffstat (limited to 'crates/ra_analysis/src/descriptors/module/imp.rs')
-rw-r--r--crates/ra_analysis/src/descriptors/module/imp.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/crates/ra_analysis/src/descriptors/module/imp.rs b/crates/ra_analysis/src/descriptors/module/imp.rs
index aecf6e29a..5fdaad137 100644
--- a/crates/ra_analysis/src/descriptors/module/imp.rs
+++ b/crates/ra_analysis/src/descriptors/module/imp.rs
@@ -13,7 +13,7 @@ use crate::{
13}; 13};
14 14
15use super::{ 15use super::{
16 ModuleData, ModuleTree, ModuleId, LinkId, LinkData, Problem, ModulesDatabase 16 ModuleData, ModuleTree, ModuleId, LinkId, LinkData, Problem, ModulesDatabase, ModuleScope
17}; 17};
18 18
19 19
@@ -35,6 +35,18 @@ pub(super) fn modules(root: ast::Root<'_>) -> impl Iterator<Item = (SmolStr, ast
35 }) 35 })
36} 36}
37 37
38pub(super) fn module_scope(
39 db: &impl ModulesDatabase,
40 source_root_id: SourceRootId,
41 module_id: ModuleId,
42) -> Cancelable<Arc<ModuleScope>> {
43 let tree = db.module_tree(source_root_id)?;
44 let file_id = module_id.file_id(&tree);
45 let syntax = db.file_syntax(file_id);
46 let res = ModuleScope::new(&syntax);
47 Ok(Arc::new(res))
48}
49
38pub(super) fn module_tree( 50pub(super) fn module_tree(
39 db: &impl ModulesDatabase, 51 db: &impl ModulesDatabase,
40 source_root: SourceRootId, 52 source_root: SourceRootId,