diff options
author | Aleksey Kladov <[email protected]> | 2018-09-15 11:38:31 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-09-15 22:00:05 +0100 |
commit | 47be3a3a24de1eb28e1575db1571d934765f6d53 (patch) | |
tree | 6653f5206a482f013fe0a6d4bb6d6dcc259f16fc /crates/libanalysis/src/module_map_db/descr.rs | |
parent | 8c737255ff876fc61f8dc8a7d33252476a4b4c8d (diff) |
renames
Diffstat (limited to 'crates/libanalysis/src/module_map_db/descr.rs')
-rw-r--r-- | crates/libanalysis/src/module_map_db/descr.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/crates/libanalysis/src/module_map_db/descr.rs b/crates/libanalysis/src/module_map_db/descr.rs new file mode 100644 index 000000000..fb298a315 --- /dev/null +++ b/crates/libanalysis/src/module_map_db/descr.rs | |||
@@ -0,0 +1,29 @@ | |||
1 | use libsyntax2::{ | ||
2 | SmolStr, | ||
3 | ast::{self, NameOwner}, | ||
4 | }; | ||
5 | |||
6 | #[derive(Debug, Hash)] | ||
7 | pub struct ModuleDescr { | ||
8 | pub submodules: Vec<Submodule> | ||
9 | } | ||
10 | |||
11 | impl ModuleDescr { | ||
12 | pub fn new(root: ast::Root) -> ModuleDescr { | ||
13 | let submodules = root | ||
14 | .modules() | ||
15 | .filter_map(|module| { | ||
16 | let name = module.name()?.text(); | ||
17 | if !module.has_semi() { | ||
18 | return None; | ||
19 | } | ||
20 | Some(Submodule { name }) | ||
21 | }).collect(); | ||
22 | |||
23 | ModuleDescr { submodules } } | ||
24 | } | ||
25 | |||
26 | #[derive(Clone, Hash, PartialEq, Eq, Debug)] | ||
27 | pub struct Submodule { | ||
28 | pub name: SmolStr, | ||
29 | } | ||