@@ -19,16 +19,12 @@ pub fn inject(
1919 let edition = sess. psess . edition ;
2020
2121 // the first name in this list is the crate name of the crate with the prelude
22- let names : & [ Symbol ] = if attr:: contains_name ( pre_configured_attrs, sym:: no_core) {
22+ let name : Symbol = if attr:: contains_name ( pre_configured_attrs, sym:: no_core) {
2323 return 0 ;
2424 } else if attr:: contains_name ( pre_configured_attrs, sym:: no_std) {
25- if attr:: contains_name ( pre_configured_attrs, sym:: compiler_builtins) {
26- & [ sym:: core]
27- } else {
28- & [ sym:: core, sym:: compiler_builtins]
29- }
25+ sym:: core
3026 } else {
31- & [ sym:: std]
27+ sym:: std
3228 } ;
3329
3430 let expn_id = resolver. expansion_for_ast_pass (
@@ -43,37 +39,18 @@ pub fn inject(
4339 let ecfg = ExpansionConfig :: default ( "std_lib_injection" . to_string ( ) , features) ;
4440 let cx = ExtCtxt :: new ( sess, ecfg, resolver, None ) ;
4541
46- // .rev() to preserve ordering above in combination with insert(0, ...)
47- for & name in names. iter ( ) . rev ( ) {
48- let ident_span = if edition >= Edition2018 { span } else { call_site } ;
49- let item = if name == sym:: compiler_builtins {
50- // compiler_builtins is a private implementation detail. We only
51- // need to insert it into the crate graph for linking and should not
52- // expose any of its public API.
53- //
54- // FIXME(#113634) We should inject this during post-processing like
55- // we do for the panic runtime, profiler runtime, etc.
56- cx. item (
57- span,
58- Ident :: new ( kw:: Underscore , ident_span) ,
59- thin_vec ! [ ] ,
60- ast:: ItemKind :: ExternCrate ( Some ( name) ) ,
61- )
62- } else {
63- cx. item (
64- span,
65- Ident :: new ( name, ident_span) ,
66- thin_vec ! [ cx. attr_word( sym:: macro_use, span) ] ,
67- ast:: ItemKind :: ExternCrate ( None ) ,
68- )
69- } ;
70- krate. items . insert ( 0 , item) ;
71- }
42+ let ident_span = if edition >= Edition2018 { span } else { call_site } ;
7243
73- // The crates have been injected, the assumption is that the first one is
74- // the one with the prelude.
75- let name = names[ 0 ] ;
44+ let item = cx. item (
45+ span,
46+ Ident :: new ( name, ident_span) ,
47+ thin_vec ! [ cx. attr_word( sym:: macro_use, span) ] ,
48+ ast:: ItemKind :: ExternCrate ( None ) ,
49+ ) ;
50+
51+ krate. items . insert ( 0 , item) ;
7652
53+ // Inject the relevant crate's prelude.
7754 let root = ( edition == Edition2015 ) . then_some ( kw:: PathRoot ) ;
7855
7956 let import_path = root
0 commit comments