@@ -397,35 +397,35 @@ impl DefMap {
397397 Some ( _) | None => from_scope. or ( from_builtin) ,
398398 } ,
399399 } ;
400- let from_extern_prelude = self
401- . extern_prelude
402- . get ( name)
403- . map_or ( PerNs :: none ( ) , |& it| PerNs :: types ( it. into ( ) , Visibility :: Public ) ) ;
404400
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) ;
406407
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 )
408409 }
409410
410411 fn resolve_name_in_crate_root_or_extern_prelude (
411412 & self ,
412413 db : & dyn DefDatabase ,
413414 name : & Name ,
414415 ) -> PerNs {
415- let arc;
416- let crate_def_map = match self . block {
416+ let from_crate_root = match self . block {
417417 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 )
420420 }
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 ) )
422426 } ;
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 ) ) ;
427427
428- from_crate_root. or ( from_extern_prelude)
428+ from_crate_root. or_else ( from_extern_prelude)
429429 }
430430
431431 fn resolve_in_prelude ( & self , db : & dyn DefDatabase , name : & Name ) -> PerNs {
0 commit comments