aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/lib.rs')
-rw-r--r--crates/ra_hir/src/lib.rs16
1 files changed, 11 insertions, 5 deletions
diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs
index dbcc5e46d..9168dad3b 100644
--- a/crates/ra_hir/src/lib.rs
+++ b/crates/ra_hir/src/lib.rs
@@ -41,6 +41,8 @@ pub use self::{
41 41
42pub use self::function::FnSignatureInfo; 42pub use self::function::FnSignatureInfo;
43 43
44/// Def's are a core concept of hir. A `Def` is an Item (function, module, etc)
45/// in a specific module.
44#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 46#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
45pub struct DefId(u32); 47pub struct DefId(u32);
46ra_db::impl_numeric_id!(DefId); 48ra_db::impl_numeric_id!(DefId);
@@ -61,13 +63,13 @@ pub struct DefLoc {
61} 63}
62 64
63impl DefId { 65impl DefId {
64 pub fn loc(self, db: &impl AsRef<LocationIntener<DefLoc, DefId>>) -> DefLoc { 66 pub(crate) fn loc(self, db: &impl AsRef<LocationIntener<DefLoc, DefId>>) -> DefLoc {
65 db.as_ref().id2loc(self) 67 db.as_ref().id2loc(self)
66 } 68 }
67} 69}
68 70
69impl DefLoc { 71impl DefLoc {
70 pub fn id(&self, db: &impl AsRef<LocationIntener<DefLoc, DefId>>) -> DefId { 72 pub(crate) fn id(&self, db: &impl AsRef<LocationIntener<DefLoc, DefId>>) -> DefId {
71 db.as_ref().loc2id(&self) 73 db.as_ref().loc2id(&self)
72 } 74 }
73} 75}
@@ -83,10 +85,14 @@ impl DefId {
83 let loc = self.loc(db); 85 let loc = self.loc(db);
84 let res = match loc.kind { 86 let res = match loc.kind {
85 DefKind::Module => { 87 DefKind::Module => {
86 let descr = Module::new(db, loc.source_root_id, loc.module_id)?; 88 let module = Module::new(db, loc.source_root_id, loc.module_id)?;
87 Def::Module(descr) 89 Def::Module(module)
88 } 90 }
89 DefKind::Item | DefKind::Function => Def::Item, 91 DefKind::Function => {
92 let function = Function::new(self);
93 Def::Function(function)
94 }
95 DefKind::Item => Def::Item,
90 }; 96 };
91 Ok(res) 97 Ok(res)
92 } 98 }