diff options
author | Aleksey Kladov <[email protected]> | 2019-01-04 21:02:05 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-01-06 14:35:29 +0000 |
commit | 9a820dc0ee23051137e4909d4698fe71930c04bc (patch) | |
tree | 2917d228f7ce13a0fe0e4e92d8ca73d1cdd2f7e3 /crates/ra_hir/src/krate.rs | |
parent | eaf553dade9a28b41631387d7c88b09fd0ba64e2 (diff) |
move crate to code_model_api
Diffstat (limited to 'crates/ra_hir/src/krate.rs')
-rw-r--r-- | crates/ra_hir/src/krate.rs | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/crates/ra_hir/src/krate.rs b/crates/ra_hir/src/krate.rs deleted file mode 100644 index 5194e280b..000000000 --- a/crates/ra_hir/src/krate.rs +++ /dev/null | |||
@@ -1,48 +0,0 @@ | |||
1 | pub use ra_db::{CrateId, Cancelable}; | ||
2 | |||
3 | use crate::{HirDatabase, Module, Name, AsName, HirFileId}; | ||
4 | |||
5 | /// hir::Crate describes a single crate. It's the main inteface with which | ||
6 | /// crate's dependencies interact. Mostly, it should be just a proxy for the | ||
7 | /// root module. | ||
8 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
9 | pub struct Crate { | ||
10 | crate_id: CrateId, | ||
11 | } | ||
12 | |||
13 | #[derive(Debug)] | ||
14 | pub struct CrateDependency { | ||
15 | pub krate: Crate, | ||
16 | pub name: Name, | ||
17 | } | ||
18 | |||
19 | impl Crate { | ||
20 | pub(crate) fn new(crate_id: CrateId) -> Crate { | ||
21 | Crate { crate_id } | ||
22 | } | ||
23 | pub fn dependencies(&self, db: &impl HirDatabase) -> Vec<CrateDependency> { | ||
24 | let crate_graph = db.crate_graph(); | ||
25 | crate_graph | ||
26 | .dependencies(self.crate_id) | ||
27 | .map(|dep| { | ||
28 | let krate = Crate::new(dep.crate_id()); | ||
29 | let name = dep.as_name(); | ||
30 | CrateDependency { krate, name } | ||
31 | }) | ||
32 | .collect() | ||
33 | } | ||
34 | pub fn root_module(&self, db: &impl HirDatabase) -> Cancelable<Option<Module>> { | ||
35 | let crate_graph = db.crate_graph(); | ||
36 | let file_id = crate_graph.crate_root(self.crate_id); | ||
37 | let source_root_id = db.file_source_root(file_id); | ||
38 | let file_id = HirFileId::from(file_id); | ||
39 | let module_tree = db.module_tree(source_root_id)?; | ||
40 | // FIXME: teach module tree about crate roots instead of guessing | ||
41 | let (module_id, _) = ctry!(module_tree | ||
42 | .modules_with_sources() | ||
43 | .find(|(_, src)| src.file_id() == file_id)); | ||
44 | |||
45 | let module = Module::new(db, source_root_id, module_id)?; | ||
46 | Ok(Some(module)) | ||
47 | } | ||
48 | } | ||