@@ -1350,7 +1350,6 @@ pub struct Resolver<'a, 'b: 'a> {
1350
1350
graph_root : Module < ' a > ,
1351
1351
1352
1352
prelude : Option < Module < ' a > > ,
1353
- extern_prelude : FxHashSet < Name > ,
1354
1353
1355
1354
/// n.b. This is used only for better diagnostics, not name resolution itself.
1356
1355
has_self : FxHashSet < DefId > ,
@@ -1663,17 +1662,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
1663
1662
DefCollector :: new ( & mut definitions, Mark :: root ( ) )
1664
1663
. collect_root ( crate_name, session. local_crate_disambiguator ( ) ) ;
1665
1664
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
-
1677
1665
let mut invocations = FxHashMap ( ) ;
1678
1666
invocations. insert ( Mark :: root ( ) ,
1679
1667
arenas. alloc_invocation_data ( InvocationData :: root ( graph_root) ) ) ;
@@ -1692,7 +1680,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
1692
1680
// AST.
1693
1681
graph_root,
1694
1682
prelude : None ,
1695
- extern_prelude,
1696
1683
1697
1684
has_self : FxHashSet ( ) ,
1698
1685
field_names : FxHashMap ( ) ,
@@ -1963,7 +1950,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
1963
1950
1964
1951
if !module. no_implicit_prelude {
1965
1952
// `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 ) {
1967
1954
let crate_id = self . crate_loader . process_path_extern ( ident. name , ident. span ) ;
1968
1955
let crate_root = self . get_module ( DefId { krate : crate_id, index : CRATE_DEF_INDEX } ) ;
1969
1956
self . populate_module_if_necessary ( & crate_root) ;
@@ -3955,7 +3942,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
3955
3942
} else {
3956
3943
// Items from the prelude
3957
3944
if !module. no_implicit_prelude {
3958
- names. extend ( self . extern_prelude . iter ( ) . cloned ( ) ) ;
3945
+ names. extend ( self . session . extern_prelude . iter ( ) . cloned ( ) ) ;
3959
3946
if let Some ( prelude) = self . prelude {
3960
3947
add_module_candidates ( prelude, & mut names) ;
3961
3948
}
@@ -4401,8 +4388,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
4401
4388
) ;
4402
4389
4403
4390
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 {
4406
4392
let ident = Ident :: with_empty_ctxt ( name) ;
4407
4393
match self . crate_loader . maybe_process_path_extern ( name, ident. span ) {
4408
4394
Some ( crate_id) => {
0 commit comments