@@ -1529,6 +1529,9 @@ pub struct Resolver<'a> {
15291529 current_type_ascription : Vec < Span > ,
15301530
15311531 injected_crate : Option < Module < ' a > > ,
1532+
1533+ /// Only supposed to be used by rustdoc, otherwise should be false.
1534+ pub ignore_extern_prelude_feature : bool ,
15321535}
15331536
15341537/// Nothing really interesting here, it just provides memory for the rest of the crate.
@@ -1792,6 +1795,7 @@ impl<'a> Resolver<'a> {
17921795 unused_macros : FxHashSet ( ) ,
17931796 current_type_ascription : Vec :: new ( ) ,
17941797 injected_crate : None ,
1798+ ignore_extern_prelude_feature : false ,
17951799 }
17961800 }
17971801
@@ -1972,7 +1976,8 @@ impl<'a> Resolver<'a> {
19721976 if !module. no_implicit_prelude {
19731977 // `record_used` means that we don't try to load crates during speculative resolution
19741978 if record_used && ns == TypeNS && self . extern_prelude . contains ( & ident. name ) {
1975- if !self . session . features_untracked ( ) . extern_prelude {
1979+ if !self . session . features_untracked ( ) . extern_prelude &&
1980+ !self . ignore_extern_prelude_feature {
19761981 feature_err ( & self . session . parse_sess , "extern_prelude" ,
19771982 ident. span , GateIssue :: Language ,
19781983 "access to extern crates through prelude is experimental" ) . emit ( ) ;
0 commit comments