@@ -1351,7 +1351,6 @@ pub struct Resolver<'a, 'b: 'a> {
13511351 graph_root : Module < ' a > ,
13521352
13531353 prelude : Option < Module < ' a > > ,
1354- extern_prelude : FxHashSet < Name > ,
13551354
13561355 /// n.b. This is used only for better diagnostics, not name resolution itself.
13571356 has_self : FxHashSet < DefId > ,
@@ -1667,17 +1666,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
16671666 DefCollector :: new ( & mut definitions, Mark :: root ( ) )
16681667 . collect_root ( crate_name, session. local_crate_disambiguator ( ) ) ;
16691668
1670- let mut extern_prelude: FxHashSet < Name > =
1671- session. opts . externs . iter ( ) . map ( |kv| Symbol :: intern ( kv. 0 ) ) . collect ( ) ;
1672-
1673- // HACK(eddyb) this ignore the `no_{core,std}` attributes.
1674- // FIXME(eddyb) warn (elsewhere) if core/std is used with `no_{core,std}`.
1675- // if !attr::contains_name(&krate.attrs, "no_core") {
1676- // if !attr::contains_name(&krate.attrs, "no_std") {
1677- extern_prelude. insert ( Symbol :: intern ( "core" ) ) ;
1678- extern_prelude. insert ( Symbol :: intern ( "std" ) ) ;
1679- extern_prelude. insert ( Symbol :: intern ( "meta" ) ) ;
1680-
16811669 let mut invocations = FxHashMap ( ) ;
16821670 invocations. insert ( Mark :: root ( ) ,
16831671 arenas. alloc_invocation_data ( InvocationData :: root ( graph_root) ) ) ;
@@ -1696,7 +1684,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
16961684 // AST.
16971685 graph_root,
16981686 prelude : None ,
1699- extern_prelude,
17001687
17011688 has_self : FxHashSet ( ) ,
17021689 field_names : FxHashMap ( ) ,
@@ -1968,7 +1955,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
19681955
19691956 if !module. no_implicit_prelude {
19701957 // `record_used` means that we don't try to load crates during speculative resolution
1971- if record_used && ns == TypeNS && self . extern_prelude . contains ( & ident. name ) {
1958+ if record_used && ns == TypeNS && self . session . extern_prelude . contains ( & ident. name ) {
19721959 let crate_id = self . crate_loader . process_path_extern ( ident. name , ident. span ) ;
19731960 let crate_root = self . get_module ( DefId { krate : crate_id, index : CRATE_DEF_INDEX } ) ;
19741961 self . populate_module_if_necessary ( & crate_root) ;
@@ -3975,7 +3962,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
39753962 } else {
39763963 // Items from the prelude
39773964 if !module. no_implicit_prelude {
3978- names. extend ( self . extern_prelude . iter ( ) . cloned ( ) ) ;
3965+ names. extend ( self . session . extern_prelude . iter ( ) . cloned ( ) ) ;
39793966 if let Some ( prelude) = self . prelude {
39803967 add_module_candidates ( prelude, & mut names) ;
39813968 }
@@ -4421,8 +4408,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
44214408 ) ;
44224409
44234410 if self . session . rust_2018 ( ) {
4424- let extern_prelude_names = self . extern_prelude . clone ( ) ;
4425- for & name in extern_prelude_names. iter ( ) {
4411+ for & name in & self . session . extern_prelude {
44264412 let ident = Ident :: with_empty_ctxt ( name) ;
44274413 match self . crate_loader . maybe_process_path_extern ( name, ident. span ) {
44284414 Some ( crate_id) => {
0 commit comments