diff options
Diffstat (limited to 'crates/ra_analysis/src/descriptors/module/mod.rs')
-rw-r--r-- | crates/ra_analysis/src/descriptors/module/mod.rs | 8 |
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 @@ | |||
1 | mod imp; | 1 | mod imp; |
2 | pub(crate) mod scope; | ||
2 | 3 | ||
3 | use std::sync::Arc; | 4 | use std::sync::Arc; |
4 | 5 | ||
@@ -11,6 +12,8 @@ use crate::{ | |||
11 | input::SourceRootId, | 12 | input::SourceRootId, |
12 | }; | 13 | }; |
13 | 14 | ||
15 | pub(crate) use self::scope::ModuleScope; | ||
16 | |||
14 | salsa::query_group! { | 17 | salsa::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 | } |