diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_analysis/src/completion.rs | 4 | ||||
-rw-r--r-- | crates/ra_analysis/src/descriptors/module/mod.rs | 8 | ||||
-rw-r--r-- | crates/ra_analysis/src/imp.rs | 8 |
3 files changed, 8 insertions, 12 deletions
diff --git a/crates/ra_analysis/src/completion.rs b/crates/ra_analysis/src/completion.rs index 6667c06e7..766df1d96 100644 --- a/crates/ra_analysis/src/completion.rs +++ b/crates/ra_analysis/src/completion.rs | |||
@@ -11,7 +11,7 @@ use rustc_hash::{FxHashMap, FxHashSet}; | |||
11 | use crate::{ | 11 | use crate::{ |
12 | db::{self, SyntaxDatabase}, | 12 | db::{self, SyntaxDatabase}, |
13 | descriptors::function::FnScopes, | 13 | descriptors::function::FnScopes, |
14 | descriptors::module::{ModuleId, ModuleScope, ModuleTree}, | 14 | descriptors::module::{ModuleId, ModuleScope, ModuleTree, ModuleSource}, |
15 | descriptors::DescriptorDatabase, | 15 | descriptors::DescriptorDatabase, |
16 | input::FilesDatabase, | 16 | input::FilesDatabase, |
17 | Cancelable, FileId, | 17 | Cancelable, FileId, |
@@ -35,7 +35,7 @@ pub(crate) fn resolve_based_completion( | |||
35 | let source_root_id = db.file_source_root(file_id); | 35 | let source_root_id = db.file_source_root(file_id); |
36 | let file = db.file_syntax(file_id); | 36 | let file = db.file_syntax(file_id); |
37 | let module_tree = db.module_tree(source_root_id)?; | 37 | let module_tree = db.module_tree(source_root_id)?; |
38 | let module_id = match module_tree.any_module_for_file(file_id) { | 38 | let module_id = match module_tree.any_module_for_source(ModuleSource::File(file_id)) { |
39 | None => return Ok(None), | 39 | None => return Ok(None), |
40 | Some(it) => it, | 40 | Some(it) => it, |
41 | }; | 41 | }; |
diff --git a/crates/ra_analysis/src/descriptors/module/mod.rs b/crates/ra_analysis/src/descriptors/module/mod.rs index 4e871d16d..13bab0087 100644 --- a/crates/ra_analysis/src/descriptors/module/mod.rs +++ b/crates/ra_analysis/src/descriptors/module/mod.rs | |||
@@ -34,12 +34,8 @@ impl ModuleTree { | |||
34 | .collect() | 34 | .collect() |
35 | } | 35 | } |
36 | 36 | ||
37 | pub(crate) fn modules_for_file(&self, file_id: FileId) -> Vec<ModuleId> { | 37 | pub(crate) fn any_module_for_source(&self, source: ModuleSource) -> Option<ModuleId> { |
38 | self.modules_for_source(ModuleSource::File(file_id)) | 38 | self.modules_for_source(source).pop() |
39 | } | ||
40 | |||
41 | pub(crate) fn any_module_for_file(&self, file_id: FileId) -> Option<ModuleId> { | ||
42 | self.modules_for_file(file_id).pop() | ||
43 | } | 39 | } |
44 | } | 40 | } |
45 | 41 | ||
diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs index 4f337d163..823ac9bdd 100644 --- a/crates/ra_analysis/src/imp.rs +++ b/crates/ra_analysis/src/imp.rs | |||
@@ -224,7 +224,7 @@ impl AnalysisImpl { | |||
224 | let module_tree = self.module_tree(file_id)?; | 224 | let module_tree = self.module_tree(file_id)?; |
225 | 225 | ||
226 | let res = module_tree | 226 | let res = module_tree |
227 | .modules_for_file(file_id) | 227 | .modules_for_source(ModuleSource::File(file_id)) |
228 | .into_iter() | 228 | .into_iter() |
229 | .filter_map(|module_id| { | 229 | .filter_map(|module_id| { |
230 | let link = module_id.parent_link(&module_tree)?; | 230 | let link = module_id.parent_link(&module_tree)?; |
@@ -252,7 +252,7 @@ impl AnalysisImpl { | |||
252 | let module_tree = self.module_tree(file_id)?; | 252 | let module_tree = self.module_tree(file_id)?; |
253 | let crate_graph = self.db.crate_graph(); | 253 | let crate_graph = self.db.crate_graph(); |
254 | let res = module_tree | 254 | let res = module_tree |
255 | .modules_for_file(file_id) | 255 | .modules_for_source(ModuleSource::File(file_id)) |
256 | .into_iter() | 256 | .into_iter() |
257 | .map(|it| it.root(&module_tree)) | 257 | .map(|it| it.root(&module_tree)) |
258 | .filter_map(|it| it.source(&module_tree).as_file()) | 258 | .filter_map(|it| it.source(&module_tree).as_file()) |
@@ -376,7 +376,7 @@ impl AnalysisImpl { | |||
376 | fix: None, | 376 | fix: None, |
377 | }) | 377 | }) |
378 | .collect::<Vec<_>>(); | 378 | .collect::<Vec<_>>(); |
379 | if let Some(m) = module_tree.any_module_for_file(file_id) { | 379 | if let Some(m) = module_tree.any_module_for_source(ModuleSource::File(file_id)) { |
380 | for (name_node, problem) in m.problems(&module_tree, &*self.db) { | 380 | for (name_node, problem) in m.problems(&module_tree, &*self.db) { |
381 | let diag = match problem { | 381 | let diag = match problem { |
382 | Problem::UnresolvedModule { candidate } => { | 382 | Problem::UnresolvedModule { candidate } => { |
@@ -539,7 +539,7 @@ impl AnalysisImpl { | |||
539 | Some(name) => name.text(), | 539 | Some(name) => name.text(), |
540 | None => return Vec::new(), | 540 | None => return Vec::new(), |
541 | }; | 541 | }; |
542 | let module_id = match module_tree.any_module_for_file(file_id) { | 542 | let module_id = match module_tree.any_module_for_source(ModuleSource::File(file_id)) { |
543 | Some(id) => id, | 543 | Some(id) => id, |
544 | None => return Vec::new(), | 544 | None => return Vec::new(), |
545 | }; | 545 | }; |