@@ -397,35 +397,35 @@ impl DefMap {
397
397
Some ( _) | None => from_scope. or ( from_builtin) ,
398
398
} ,
399
399
} ;
400
- let from_extern_prelude = self
401
- . extern_prelude
402
- . get ( name)
403
- . map_or ( PerNs :: none ( ) , |& it| PerNs :: types ( it. into ( ) , Visibility :: Public ) ) ;
404
400
405
- let from_prelude = self . resolve_in_prelude ( db, name) ;
401
+ let extern_prelude = || {
402
+ self . extern_prelude
403
+ . get ( name)
404
+ . map_or ( PerNs :: none ( ) , |& it| PerNs :: types ( it. into ( ) , Visibility :: Public ) )
405
+ } ;
406
+ let prelude = || self . resolve_in_prelude ( db, name) ;
406
407
407
- from_legacy_macro. or ( from_scope_or_builtin) . or ( from_extern_prelude ) . or ( from_prelude )
408
+ from_legacy_macro. or ( from_scope_or_builtin) . or_else ( extern_prelude ) . or_else ( prelude )
408
409
}
409
410
410
411
fn resolve_name_in_crate_root_or_extern_prelude (
411
412
& self ,
412
413
db : & dyn DefDatabase ,
413
414
name : & Name ,
414
415
) -> PerNs {
415
- let arc;
416
- let crate_def_map = match self . block {
416
+ let from_crate_root = match self . block {
417
417
Some ( _) => {
418
- arc = self . crate_root ( db) . def_map ( db) ;
419
- & arc
418
+ let def_map = self . crate_root ( db) . def_map ( db) ;
419
+ def_map [ def_map . root ] . scope . get ( name )
420
420
}
421
- None => self ,
421
+ None => self [ self . root ] . scope . get ( name) ,
422
+ } ;
423
+ let from_extern_prelude = || {
424
+ self . resolve_name_in_extern_prelude ( db, name)
425
+ . map_or ( PerNs :: none ( ) , |it| PerNs :: types ( it. into ( ) , Visibility :: Public ) )
422
426
} ;
423
- let from_crate_root = crate_def_map[ crate_def_map. root ] . scope . get ( name) ;
424
- let from_extern_prelude = self
425
- . resolve_name_in_extern_prelude ( db, name)
426
- . map_or ( PerNs :: none ( ) , |it| PerNs :: types ( it. into ( ) , Visibility :: Public ) ) ;
427
427
428
- from_crate_root. or ( from_extern_prelude)
428
+ from_crate_root. or_else ( from_extern_prelude)
429
429
}
430
430
431
431
fn resolve_in_prelude ( & self , db : & dyn DefDatabase , name : & Name ) -> PerNs {
0 commit comments