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