diff options
Diffstat (limited to 'crates/hir_def/src/lib.rs')
-rw-r--r-- | crates/hir_def/src/lib.rs | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/crates/hir_def/src/lib.rs b/crates/hir_def/src/lib.rs index 08ed920c6..c8dbb2aeb 100644 --- a/crates/hir_def/src/lib.rs +++ b/crates/hir_def/src/lib.rs | |||
@@ -50,7 +50,10 @@ pub mod import_map; | |||
50 | #[cfg(test)] | 50 | #[cfg(test)] |
51 | mod test_db; | 51 | mod test_db; |
52 | 52 | ||
53 | use std::hash::{Hash, Hasher}; | 53 | use std::{ |
54 | hash::{Hash, Hasher}, | ||
55 | sync::Arc, | ||
56 | }; | ||
54 | 57 | ||
55 | use base_db::{impl_intern_key, salsa, CrateId}; | 58 | use base_db::{impl_intern_key, salsa, CrateId}; |
56 | use hir_expand::{ | 59 | use hir_expand::{ |
@@ -58,6 +61,7 @@ use hir_expand::{ | |||
58 | MacroCallId, MacroCallKind, MacroDefId, MacroDefKind, | 61 | MacroCallId, MacroCallKind, MacroDefId, MacroDefKind, |
59 | }; | 62 | }; |
60 | use la_arena::Idx; | 63 | use la_arena::Idx; |
64 | use nameres::DefMap; | ||
61 | use syntax::ast; | 65 | use syntax::ast; |
62 | 66 | ||
63 | use crate::builtin_type::BuiltinType; | 67 | use crate::builtin_type::BuiltinType; |
@@ -69,10 +73,24 @@ use stdx::impl_from; | |||
69 | 73 | ||
70 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 74 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
71 | pub struct ModuleId { | 75 | pub struct ModuleId { |
72 | pub krate: CrateId, | 76 | krate: CrateId, |
73 | pub local_id: LocalModuleId, | 77 | pub local_id: LocalModuleId, |
74 | } | 78 | } |
75 | 79 | ||
80 | impl ModuleId { | ||
81 | pub fn top_level(krate: CrateId, local_id: LocalModuleId) -> Self { | ||
82 | Self { krate, local_id } | ||
83 | } | ||
84 | |||
85 | pub fn def_map(&self, db: &dyn db::DefDatabase) -> Arc<DefMap> { | ||
86 | db.crate_def_map(self.krate) | ||
87 | } | ||
88 | |||
89 | pub fn krate(&self) -> CrateId { | ||
90 | self.krate | ||
91 | } | ||
92 | } | ||
93 | |||
76 | /// An ID of a module, **local** to a specific crate | 94 | /// An ID of a module, **local** to a specific crate |
77 | pub type LocalModuleId = Idx<nameres::ModuleData>; | 95 | pub type LocalModuleId = Idx<nameres::ModuleData>; |
78 | 96 | ||