@@ -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,13 @@ 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 ( self , db : & dyn DefDatabase ) -> ( & DefMap , & LocalDefMap ) {
332
+ let def_map = crate_local_def_map ( db, self . krate ) ;
333
+ ( def_map. def_map ( db) , def_map. local ( db) )
333
334
}
334
335
335
336
pub fn krate ( self ) -> Crate {
@@ -390,26 +391,29 @@ pub struct ModuleId {
390
391
}
391
392
392
393
impl ModuleId {
393
- pub fn def_map ( self , db : & dyn DefDatabase ) -> Arc < DefMap > {
394
+ pub fn def_map ( self , db : & dyn DefDatabase ) -> & DefMap {
394
395
match self . block {
395
- Some ( block) => db . block_def_map ( block) ,
396
- None => db . crate_def_map ( self . krate ) ,
396
+ Some ( block) => block_def_map ( db , block) ,
397
+ None => crate_def_map ( db , self . krate ) ,
397
398
}
398
399
}
399
400
400
- pub ( crate ) fn local_def_map ( self , db : & dyn DefDatabase ) -> ( Arc < DefMap > , Arc < LocalDefMap > ) {
401
+ pub ( crate ) fn local_def_map ( self , db : & dyn DefDatabase ) -> ( & DefMap , & LocalDefMap ) {
401
402
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 ) ,
403
+ Some ( block) => ( block_def_map ( db, block) , self . only_local_def_map ( db) ) ,
404
+ None => {
405
+ let def_map = crate_local_def_map ( db, self . krate ) ;
406
+ ( def_map. def_map ( db) , def_map. local ( db) )
407
+ }
404
408
}
405
409
}
406
410
407
- pub ( crate ) fn only_local_def_map ( self , db : & dyn DefDatabase ) -> Arc < LocalDefMap > {
408
- db . crate_local_def_map ( self . krate ) . 1
411
+ pub ( crate ) fn only_local_def_map ( self , db : & dyn DefDatabase ) -> & LocalDefMap {
412
+ crate_local_def_map ( db , self . krate ) . local ( db )
409
413
}
410
414
411
- pub fn crate_def_map ( self , db : & dyn DefDatabase ) -> Arc < DefMap > {
412
- db . crate_def_map ( self . krate )
415
+ pub fn crate_def_map ( self , db : & dyn DefDatabase ) -> & DefMap {
416
+ crate_def_map ( db , self . krate )
413
417
}
414
418
415
419
pub fn krate ( self ) -> Crate {
0 commit comments