diff options
author | Aleksey Kladov <[email protected]> | 2019-05-23 19:01:08 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-05-23 19:01:31 +0100 |
commit | bde9cab66ec04b185679a39ded69d0ab857aec33 (patch) | |
tree | 67bd5296ddb6b65cfe689d2b81dff29d5360d66b /crates/ra_hir/src/code_model_impl/module.rs | |
parent | 7f22f905037f4a6c15195263e9bb6bcb022d65b6 (diff) |
remove references
Diffstat (limited to 'crates/ra_hir/src/code_model_impl/module.rs')
-rw-r--r-- | crates/ra_hir/src/code_model_impl/module.rs | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/crates/ra_hir/src/code_model_impl/module.rs b/crates/ra_hir/src/code_model_impl/module.rs deleted file mode 100644 index 5c2ea73ce..000000000 --- a/crates/ra_hir/src/code_model_impl/module.rs +++ /dev/null | |||
@@ -1,99 +0,0 @@ | |||
1 | use ra_db::FileId; | ||
2 | use ra_syntax::{ast, TreeArc}; | ||
3 | |||
4 | use crate::{ | ||
5 | Module, ModuleSource, Name, AstId, | ||
6 | nameres::CrateModuleId, | ||
7 | HirDatabase, DefDatabase, | ||
8 | HirFileId, | ||
9 | }; | ||
10 | |||
11 | impl ModuleSource { | ||
12 | pub(crate) fn new( | ||
13 | db: &impl DefDatabase, | ||
14 | file_id: Option<FileId>, | ||
15 | decl_id: Option<AstId<ast::Module>>, | ||
16 | ) -> ModuleSource { | ||
17 | match (file_id, decl_id) { | ||
18 | (Some(file_id), _) => { | ||
19 | let source_file = db.parse(file_id); | ||
20 | ModuleSource::SourceFile(source_file) | ||
21 | } | ||
22 | (None, Some(item_id)) => { | ||
23 | let module = item_id.to_node(db); | ||
24 | assert!(module.item_list().is_some(), "expected inline module"); | ||
25 | ModuleSource::Module(module.to_owned()) | ||
26 | } | ||
27 | (None, None) => panic!(), | ||
28 | } | ||
29 | } | ||
30 | } | ||
31 | |||
32 | impl Module { | ||
33 | fn with_module_id(&self, module_id: CrateModuleId) -> Module { | ||
34 | Module { module_id, krate: self.krate } | ||
35 | } | ||
36 | |||
37 | pub(crate) fn name_impl(&self, db: &impl HirDatabase) -> Option<Name> { | ||
38 | let def_map = db.crate_def_map(self.krate); | ||
39 | let parent = def_map[self.module_id].parent?; | ||
40 | def_map[parent].children.iter().find_map(|(name, module_id)| { | ||
41 | if *module_id == self.module_id { | ||
42 | Some(name.clone()) | ||
43 | } else { | ||
44 | None | ||
45 | } | ||
46 | }) | ||
47 | } | ||
48 | |||
49 | pub(crate) fn definition_source_impl( | ||
50 | &self, | ||
51 | db: &impl DefDatabase, | ||
52 | ) -> (HirFileId, ModuleSource) { | ||
53 | let def_map = db.crate_def_map(self.krate); | ||
54 | let decl_id = def_map[self.module_id].declaration; | ||
55 | let file_id = def_map[self.module_id].definition; | ||
56 | let module_source = ModuleSource::new(db, file_id, decl_id); | ||
57 | let file_id = file_id.map(HirFileId::from).unwrap_or_else(|| decl_id.unwrap().file_id()); | ||
58 | (file_id, module_source) | ||
59 | } | ||
60 | |||
61 | pub(crate) fn declaration_source_impl( | ||
62 | &self, | ||
63 | db: &impl HirDatabase, | ||
64 | ) -> Option<(HirFileId, TreeArc<ast::Module>)> { | ||
65 | let def_map = db.crate_def_map(self.krate); | ||
66 | let decl = def_map[self.module_id].declaration?; | ||
67 | let ast = decl.to_node(db); | ||
68 | Some((decl.file_id(), ast)) | ||
69 | } | ||
70 | |||
71 | pub(crate) fn crate_root_impl(&self, db: &impl DefDatabase) -> Module { | ||
72 | let def_map = db.crate_def_map(self.krate); | ||
73 | self.with_module_id(def_map.root()) | ||
74 | } | ||
75 | |||
76 | /// Finds a child module with the specified name. | ||
77 | pub(crate) fn child_impl(&self, db: &impl HirDatabase, name: &Name) -> Option<Module> { | ||
78 | let def_map = db.crate_def_map(self.krate); | ||
79 | let child_id = def_map[self.module_id].children.get(name)?; | ||
80 | Some(self.with_module_id(*child_id)) | ||
81 | } | ||
82 | |||
83 | /// Iterates over all child modules. | ||
84 | pub(crate) fn children_impl(&self, db: &impl DefDatabase) -> impl Iterator<Item = Module> { | ||
85 | let def_map = db.crate_def_map(self.krate); | ||
86 | let children = def_map[self.module_id] | ||
87 | .children | ||
88 | .iter() | ||
89 | .map(|(_, module_id)| self.with_module_id(*module_id)) | ||
90 | .collect::<Vec<_>>(); | ||
91 | children.into_iter() | ||
92 | } | ||
93 | |||
94 | pub(crate) fn parent_impl(&self, db: &impl DefDatabase) -> Option<Module> { | ||
95 | let def_map = db.crate_def_map(self.krate); | ||
96 | let parent_id = def_map[self.module_id].parent?; | ||
97 | Some(self.with_module_id(parent_id)) | ||
98 | } | ||
99 | } | ||