@@ -19,16 +19,12 @@ pub fn inject(
19
19
let edition = sess. psess . edition ;
20
20
21
21
// 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) {
23
23
return 0 ;
24
24
} 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
30
26
} else {
31
- & [ sym:: std]
27
+ sym:: std
32
28
} ;
33
29
34
30
let expn_id = resolver. expansion_for_ast_pass (
@@ -43,37 +39,18 @@ pub fn inject(
43
39
let ecfg = ExpansionConfig :: default ( "std_lib_injection" . to_string ( ) , features) ;
44
40
let cx = ExtCtxt :: new ( sess, ecfg, resolver, None ) ;
45
41
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 } ;
72
43
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) ;
76
52
53
+ // Inject the relevant crate's prelude.
77
54
let root = ( edition == Edition2015 ) . then_some ( kw:: PathRoot ) ;
78
55
79
56
let import_path = root
0 commit comments