aboutsummaryrefslogtreecommitdiff
path: root/crates/libanalysis/src/module_map_db/descr.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-09-15 11:38:31 +0100
committerAleksey Kladov <[email protected]>2018-09-15 22:00:05 +0100
commit47be3a3a24de1eb28e1575db1571d934765f6d53 (patch)
tree6653f5206a482f013fe0a6d4bb6d6dcc259f16fc /crates/libanalysis/src/module_map_db/descr.rs
parent8c737255ff876fc61f8dc8a7d33252476a4b4c8d (diff)
renames
Diffstat (limited to 'crates/libanalysis/src/module_map_db/descr.rs')
-rw-r--r--crates/libanalysis/src/module_map_db/descr.rs29
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 @@
1use libsyntax2::{
2 SmolStr,
3 ast::{self, NameOwner},
4};
5
6#[derive(Debug, Hash)]
7pub struct ModuleDescr {
8 pub submodules: Vec<Submodule>
9}
10
11impl 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)]
27pub struct Submodule {
28 pub name: SmolStr,
29}