@@ -1350,7 +1350,6 @@ pub struct Resolver<'a, 'b: 'a> {
13501350 graph_root : Module < ' a > ,
13511351
13521352 prelude : Option < Module < ' a > > ,
1353- extern_prelude : FxHashSet < Name > ,
13541353
13551354 /// n.b. This is used only for better diagnostics, not name resolution itself.
13561355 has_self : FxHashSet < DefId > ,
@@ -1663,17 +1662,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
16631662 DefCollector :: new ( & mut definitions, Mark :: root ( ) )
16641663 . collect_root ( crate_name, session. local_crate_disambiguator ( ) ) ;
16651664
1666- let mut extern_prelude: FxHashSet < Name > =
1667- session. opts . externs . iter ( ) . map ( |kv| Symbol :: intern ( kv. 0 ) ) . collect ( ) ;
1668-
1669- // HACK(eddyb) this ignore the `no_{core,std}` attributes.
1670- // FIXME(eddyb) warn (elsewhere) if core/std is used with `no_{core,std}`.
1671- // if !attr::contains_name(&krate.attrs, "no_core") {
1672- // if !attr::contains_name(&krate.attrs, "no_std") {
1673- extern_prelude. insert ( Symbol :: intern ( "core" ) ) ;
1674- extern_prelude. insert ( Symbol :: intern ( "std" ) ) ;
1675- extern_prelude. insert ( Symbol :: intern ( "meta" ) ) ;
1676-
16771665 let mut invocations = FxHashMap ( ) ;
16781666 invocations. insert ( Mark :: root ( ) ,
16791667 arenas. alloc_invocation_data ( InvocationData :: root ( graph_root) ) ) ;
@@ -1692,7 +1680,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
16921680 // AST.
16931681 graph_root,
16941682 prelude : None ,
1695- extern_prelude,
16961683
16971684 has_self : FxHashSet ( ) ,
16981685 field_names : FxHashMap ( ) ,
@@ -1963,7 +1950,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
19631950
19641951 if !module. no_implicit_prelude {
19651952 // `record_used` means that we don't try to load crates during speculative resolution
1966- if record_used && ns == TypeNS && self . extern_prelude . contains ( & ident. name ) {
1953+ if record_used && ns == TypeNS && self . session . extern_prelude . contains ( & ident. name ) {
19671954 let crate_id = self . crate_loader . process_path_extern ( ident. name , ident. span ) ;
19681955 let crate_root = self . get_module ( DefId { krate : crate_id, index : CRATE_DEF_INDEX } ) ;
19691956 self . populate_module_if_necessary ( & crate_root) ;
@@ -3955,7 +3942,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
39553942 } else {
39563943 // Items from the prelude
39573944 if !module. no_implicit_prelude {
3958- names. extend ( self . extern_prelude . iter ( ) . cloned ( ) ) ;
3945+ names. extend ( self . session . extern_prelude . iter ( ) . cloned ( ) ) ;
39593946 if let Some ( prelude) = self . prelude {
39603947 add_module_candidates ( prelude, & mut names) ;
39613948 }
@@ -4401,8 +4388,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
44014388 ) ;
44024389
44034390 if self . session . rust_2018 ( ) {
4404- let extern_prelude_names = self . extern_prelude . clone ( ) ;
4405- for & name in extern_prelude_names. iter ( ) {
4391+ for & name in & self . session . extern_prelude {
44064392 let ident = Ident :: with_empty_ctxt ( name) ;
44074393 match self . crate_loader . maybe_process_path_extern ( name, ident. span ) {
44084394 Some ( crate_id) => {
0 commit comments