@@ -1351,7 +1351,6 @@ pub struct Resolver<'a, 'b: 'a> {
1351
1351
graph_root : Module < ' a > ,
1352
1352
1353
1353
prelude : Option < Module < ' a > > ,
1354
- extern_prelude : FxHashSet < Name > ,
1355
1354
1356
1355
/// n.b. This is used only for better diagnostics, not name resolution itself.
1357
1356
has_self : FxHashSet < DefId > ,
@@ -1667,17 +1666,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
1667
1666
DefCollector :: new ( & mut definitions, Mark :: root ( ) )
1668
1667
. collect_root ( crate_name, session. local_crate_disambiguator ( ) ) ;
1669
1668
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
-
1681
1669
let mut invocations = FxHashMap ( ) ;
1682
1670
invocations. insert ( Mark :: root ( ) ,
1683
1671
arenas. alloc_invocation_data ( InvocationData :: root ( graph_root) ) ) ;
@@ -1696,7 +1684,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
1696
1684
// AST.
1697
1685
graph_root,
1698
1686
prelude : None ,
1699
- extern_prelude,
1700
1687
1701
1688
has_self : FxHashSet ( ) ,
1702
1689
field_names : FxHashMap ( ) ,
@@ -1968,7 +1955,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
1968
1955
1969
1956
if !module. no_implicit_prelude {
1970
1957
// `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 ) {
1972
1959
let crate_id = self . crate_loader . process_path_extern ( ident. name , ident. span ) ;
1973
1960
let crate_root = self . get_module ( DefId { krate : crate_id, index : CRATE_DEF_INDEX } ) ;
1974
1961
self . populate_module_if_necessary ( & crate_root) ;
@@ -3975,7 +3962,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
3975
3962
} else {
3976
3963
// Items from the prelude
3977
3964
if !module. no_implicit_prelude {
3978
- names. extend ( self . extern_prelude . iter ( ) . cloned ( ) ) ;
3965
+ names. extend ( self . session . extern_prelude . iter ( ) . cloned ( ) ) ;
3979
3966
if let Some ( prelude) = self . prelude {
3980
3967
add_module_candidates ( prelude, & mut names) ;
3981
3968
}
@@ -4421,8 +4408,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
4421
4408
) ;
4422
4409
4423
4410
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 {
4426
4412
let ident = Ident :: with_empty_ctxt ( name) ;
4427
4413
match self . crate_loader . maybe_process_path_extern ( name, ident. span ) {
4428
4414
Some ( crate_id) => {
0 commit comments