@@ -20,7 +20,7 @@ use crate::{
2020 path:: { ModPath , PathKind } ,
2121 per_ns:: PerNs ,
2222 visibility:: { RawVisibility , Visibility } ,
23- AdtId , CrateId , EnumVariantId , LocalModuleId , ModuleDefId , ModuleId ,
23+ AdtId , CrateId , EnumVariantId , LocalModuleId , ModuleDefId ,
2424} ;
2525
2626#[ derive( Debug , Clone , Copy , PartialEq , Eq ) ]
@@ -74,17 +74,6 @@ impl PerNs {
7474}
7575
7676impl DefMap {
77- pub ( super ) fn resolve_name_in_extern_prelude (
78- & self ,
79- db : & dyn DefDatabase ,
80- name : & Name ,
81- ) -> Option < ModuleId > {
82- match self . block {
83- Some ( _) => self . crate_root ( db) . def_map ( db) . data . extern_prelude . get ( name) . copied ( ) ,
84- None => self . data . extern_prelude . get ( name) . copied ( ) ,
85- }
86- }
87-
8877 pub ( crate ) fn resolve_visibility (
8978 & self ,
9079 db : & dyn DefDatabase ,
@@ -204,15 +193,15 @@ impl DefMap {
204193 PathKind :: DollarCrate ( krate) => {
205194 if krate == self . krate {
206195 cov_mark:: hit!( macro_dollar_crate_self) ;
207- PerNs :: types ( self . crate_root ( db ) . into ( ) , Visibility :: Public )
196+ PerNs :: types ( self . crate_root ( ) . into ( ) , Visibility :: Public )
208197 } else {
209198 let def_map = db. crate_def_map ( krate) ;
210199 let module = def_map. module_id ( Self :: ROOT ) ;
211200 cov_mark:: hit!( macro_dollar_crate_other) ;
212201 PerNs :: types ( module. into ( ) , Visibility :: Public )
213202 }
214203 }
215- PathKind :: Crate => PerNs :: types ( self . crate_root ( db ) . into ( ) , Visibility :: Public ) ,
204+ PathKind :: Crate => PerNs :: types ( self . crate_root ( ) . into ( ) , Visibility :: Public ) ,
216205 // plain import or absolute path in 2015: crate-relative with
217206 // fallback to extern prelude (with the simplification in
218207 // rust-lang/rust#57745)
@@ -453,6 +442,10 @@ impl DefMap {
453442 } ;
454443
455444 let extern_prelude = || {
445+ if self . block . is_some ( ) {
446+ // Don't resolve extern prelude in block `DefMap`s.
447+ return PerNs :: none ( ) ;
448+ }
456449 self . data
457450 . extern_prelude
458451 . get ( name)
@@ -479,13 +472,20 @@ impl DefMap {
479472 ) -> PerNs {
480473 let from_crate_root = match self . block {
481474 Some ( _) => {
482- let def_map = self . crate_root ( db ) . def_map ( db) ;
475+ let def_map = self . crate_root ( ) . def_map ( db) ;
483476 def_map[ Self :: ROOT ] . scope . get ( name)
484477 }
485478 None => self [ Self :: ROOT ] . scope . get ( name) ,
486479 } ;
487480 let from_extern_prelude = || {
488- self . resolve_name_in_extern_prelude ( db, name)
481+ if self . block . is_some ( ) {
482+ // Don't resolve extern prelude in block `DefMap`s.
483+ return PerNs :: none ( ) ;
484+ }
485+ self . data
486+ . extern_prelude
487+ . get ( name)
488+ . copied ( )
489489 . map_or ( PerNs :: none ( ) , |it| PerNs :: types ( it. into ( ) , Visibility :: Public ) )
490490 } ;
491491
0 commit comments