@@ -399,35 +399,35 @@ impl DefMap {
399399 Some ( _) | None => from_scope. or ( from_builtin) ,
400400 } ,
401401 } ;
402- let from_extern_prelude = self
403- . extern_prelude
404- . get ( name)
405- . map_or ( PerNs :: none ( ) , |& it| PerNs :: types ( it. into ( ) , Visibility :: Public ) ) ;
406402
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) ;
408409
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 )
410411 }
411412
412413 fn resolve_name_in_crate_root_or_extern_prelude (
413414 & self ,
414415 db : & dyn DefDatabase ,
415416 name : & Name ,
416417 ) -> PerNs {
417- let arc;
418- let crate_def_map = match self . block {
418+ let from_crate_root = match self . block {
419419 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 )
422422 }
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 ) )
424428 } ;
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 ) ) ;
429429
430- from_crate_root. or ( from_extern_prelude)
430+ from_crate_root. or_else ( from_extern_prelude)
431431 }
432432
433433 fn resolve_in_prelude ( & self , db : & dyn DefDatabase , name : & Name ) -> PerNs {
0 commit comments