@@ -92,7 +92,7 @@ use crate::{
92
92
Const , Enum , ExternCrate , Function , Impl , ItemTreeId , ItemTreeNode , Macro2 , MacroRules ,
93
93
Static , Struct , Trait , TraitAlias , TypeAlias , Union , Use , Variant ,
94
94
} ,
95
- nameres:: LocalDefMap ,
95
+ nameres:: { LocalDefMap , block_def_map , crate_def_map , crate_local_def_map } ,
96
96
signatures:: VariantFields ,
97
97
} ;
98
98
@@ -324,12 +324,16 @@ pub struct CrateRootModuleId {
324
324
}
325
325
326
326
impl CrateRootModuleId {
327
- pub fn def_map ( & self , db : & dyn DefDatabase ) -> Arc < DefMap > {
328
- db . crate_def_map ( self . krate )
327
+ pub fn def_map ( self , db : & dyn DefDatabase ) -> & DefMap {
328
+ crate_def_map ( db , self . krate )
329
329
}
330
330
331
- pub ( crate ) fn local_def_map ( & self , db : & dyn DefDatabase ) -> ( Arc < DefMap > , Arc < LocalDefMap > ) {
332
- db. crate_local_def_map ( self . krate )
331
+ pub ( crate ) fn local_def_map (
332
+ self ,
333
+ db : & dyn DefDatabase ,
334
+ ) -> ( & DefMap , & LocalDefMap ) {
335
+ let def_map = crate_local_def_map ( db, self . krate ) ;
336
+ ( def_map. def_map ( db) , def_map. local ( db) )
333
337
}
334
338
335
339
pub fn krate ( self ) -> Crate {
@@ -390,26 +394,29 @@ pub struct ModuleId {
390
394
}
391
395
392
396
impl ModuleId {
393
- pub fn def_map ( self , db : & dyn DefDatabase ) -> Arc < DefMap > {
397
+ pub fn def_map ( self , db : & dyn DefDatabase ) -> & DefMap {
394
398
match self . block {
395
- Some ( block) => db . block_def_map ( block) ,
396
- None => db . crate_def_map ( self . krate ) ,
399
+ Some ( block) => block_def_map ( db , block) ,
400
+ None => crate_def_map ( db , self . krate ) ,
397
401
}
398
402
}
399
403
400
- pub ( crate ) fn local_def_map ( self , db : & dyn DefDatabase ) -> ( Arc < DefMap > , Arc < LocalDefMap > ) {
404
+ pub ( crate ) fn local_def_map ( self , db : & dyn DefDatabase ) -> ( & DefMap , & LocalDefMap ) {
401
405
match self . block {
402
- Some ( block) => ( db. block_def_map ( block) , self . only_local_def_map ( db) ) ,
403
- None => db. crate_local_def_map ( self . krate ) ,
406
+ Some ( block) => ( block_def_map ( db, block) , self . only_local_def_map ( db) ) ,
407
+ None => {
408
+ let def_map = crate_local_def_map ( db, self . krate ) ;
409
+ ( def_map. def_map ( db) , def_map. local ( db) )
410
+ }
404
411
}
405
412
}
406
413
407
- pub ( crate ) fn only_local_def_map ( self , db : & dyn DefDatabase ) -> Arc < LocalDefMap > {
408
- db . crate_local_def_map ( self . krate ) . 1
414
+ pub ( crate ) fn only_local_def_map ( self , db : & dyn DefDatabase ) -> & LocalDefMap {
415
+ crate_local_def_map ( db , self . krate ) . local ( db )
409
416
}
410
417
411
- pub fn crate_def_map ( self , db : & dyn DefDatabase ) -> Arc < DefMap > {
412
- db . crate_def_map ( self . krate )
418
+ pub fn crate_def_map ( self , db : & dyn DefDatabase ) -> & DefMap {
419
+ crate_def_map ( db , self . krate )
413
420
}
414
421
415
422
pub fn krate ( self ) -> Crate {
0 commit comments