aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/descriptors/module/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_analysis/src/descriptors/module/mod.rs')
-rw-r--r--crates/ra_analysis/src/descriptors/module/mod.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/crates/ra_analysis/src/descriptors/module/mod.rs b/crates/ra_analysis/src/descriptors/module/mod.rs
index 8968c4afd..9e5d73f94 100644
--- a/crates/ra_analysis/src/descriptors/module/mod.rs
+++ b/crates/ra_analysis/src/descriptors/module/mod.rs
@@ -1,4 +1,5 @@
1mod imp; 1mod imp;
2pub(crate) mod scope;
2 3
3use std::sync::Arc; 4use std::sync::Arc;
4 5
@@ -11,6 +12,8 @@ use crate::{
11 input::SourceRootId, 12 input::SourceRootId,
12}; 13};
13 14
15pub(crate) use self::scope::ModuleScope;
16
14salsa::query_group! { 17salsa::query_group! {
15 pub(crate) trait ModulesDatabase: SyntaxDatabase { 18 pub(crate) trait ModulesDatabase: SyntaxDatabase {
16 fn module_tree(source_root_id: SourceRootId) -> Cancelable<Arc<ModuleTree>> { 19 fn module_tree(source_root_id: SourceRootId) -> Cancelable<Arc<ModuleTree>> {
@@ -21,6 +24,10 @@ salsa::query_group! {
21 type SubmodulesQuery; 24 type SubmodulesQuery;
22 use fn imp::submodules; 25 use fn imp::submodules;
23 } 26 }
27 fn module_scope(source_root_id: SourceRootId, module_id: ModuleId) -> Cancelable<Arc<ModuleScope>> {
28 type ModuleScopeQuery;
29 use fn imp::module_scope;
30 }
24 } 31 }
25} 32}
26 33
@@ -78,6 +85,7 @@ impl ModuleId {
78 while let Some(next) = curr.parent(tree) { 85 while let Some(next) = curr.parent(tree) {
79 curr = next; 86 curr = next;
80 i += 1; 87 i += 1;
88 // simplistic cycle detection
81 if i > 100 { 89 if i > 100 {
82 return self; 90 return self;
83 } 91 }