@@ -41,6 +41,8 @@ pub use self::{
41
41
42
42
pub 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
46
#[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash ) ]
45
47
pub struct DefId ( u32 ) ;
46
48
ra_db:: impl_numeric_id!( DefId ) ;
@@ -61,13 +63,13 @@ pub struct DefLoc {
61
63
}
62
64
63
65
impl 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
67
db. as_ref ( ) . id2loc ( self )
66
68
}
67
69
}
68
70
69
71
impl 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
73
db. as_ref ( ) . loc2id ( & self )
72
74
}
73
75
}
@@ -83,10 +85,14 @@ impl DefId {
83
85
let loc = self . loc ( db) ;
84
86
let res = match loc. kind {
85
87
DefKind :: Module => {
86
- let descr = Module :: new ( db, loc. source_root_id , loc. module_id ) ?;
87
- Def :: Module ( descr )
88
+ let module = Module :: new ( db, loc. source_root_id , loc. module_id ) ?;
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
97
Ok ( res)
92
98
}
0 commit comments