8
8
// option. This file may not be copied, modified, or distributed
9
9
// except according to those terms.
10
10
11
- use driver:: config;
12
- use driver:: session:: Session ;
13
-
14
- use syntax:: ast;
15
- use syntax:: attr;
16
- use syntax:: codemap:: DUMMY_SP ;
17
- use syntax:: codemap;
18
- use syntax:: fold:: Folder ;
19
- use syntax:: fold;
20
- use syntax:: owned_slice:: OwnedSlice ;
21
- use syntax:: parse:: token:: InternedString ;
22
- use syntax:: parse:: token:: special_idents;
23
- use syntax:: parse:: token;
24
- use syntax:: ptr:: P ;
25
- use syntax:: util:: small_vector:: SmallVector ;
11
+ use ast;
12
+ use attr;
13
+ use codemap:: DUMMY_SP ;
14
+ use codemap;
15
+ use fold:: Folder ;
16
+ use fold;
17
+ use owned_slice:: OwnedSlice ;
18
+ use parse:: token:: InternedString ;
19
+ use parse:: token:: special_idents;
20
+ use parse:: token;
21
+ use ptr:: P ;
22
+ use util:: small_vector:: SmallVector ;
26
23
27
24
use std:: mem;
28
25
29
- pub fn maybe_inject_crates_ref ( sess : & Session , krate : ast:: Crate )
26
+ pub fn maybe_inject_crates_ref ( krate : ast:: Crate , alt_std_name : Option < String > , any_exe : bool )
30
27
-> ast:: Crate {
31
28
if use_std ( & krate) {
32
- inject_crates_ref ( sess , krate )
29
+ inject_crates_ref ( krate , alt_std_name , any_exe )
33
30
} else {
34
31
krate
35
32
}
36
33
}
37
34
38
- pub fn maybe_inject_prelude ( sess : & Session , krate : ast:: Crate ) -> ast:: Crate {
35
+ pub fn maybe_inject_prelude ( krate : ast:: Crate ) -> ast:: Crate {
39
36
if use_std ( & krate) {
40
- inject_prelude ( sess , krate)
37
+ inject_prelude ( krate)
41
38
} else {
42
39
krate
43
40
}
@@ -56,14 +53,15 @@ fn no_prelude(attrs: &[ast::Attribute]) -> bool {
56
53
}
57
54
58
55
struct StandardLibraryInjector < ' a > {
59
- sess : & ' a Session ,
56
+ alt_std_name : Option < String > ,
57
+ any_exe : bool ,
60
58
}
61
59
62
60
impl < ' a > fold:: Folder for StandardLibraryInjector < ' a > {
63
61
fn fold_crate ( & mut self , mut krate : ast:: Crate ) -> ast:: Crate {
64
62
65
63
// The name to use in `extern crate "name" as std;`
66
- let actual_crate_name = match self . sess . opts . alt_std_name {
64
+ let actual_crate_name = match self . alt_std_name {
67
65
Some ( ref s) => token:: intern_and_get_ident ( s. as_slice ( ) ) ,
68
66
None => token:: intern_and_get_ident ( "std" ) ,
69
67
} ;
@@ -83,10 +81,7 @@ impl<'a> fold::Folder for StandardLibraryInjector<'a> {
83
81
span: DUMMY_SP
84
82
} ) ;
85
83
86
- let any_exe = self . sess . crate_types . borrow ( ) . iter ( ) . any ( |ty| {
87
- * ty == config:: CrateTypeExecutable
88
- } ) ;
89
- if use_start ( & krate) && any_exe {
84
+ if use_start ( & krate) && self . any_exe {
90
85
let visible_rt_name = "rt" ;
91
86
let actual_rt_name = "native" ;
92
87
// Gensym the ident so it can't be named
@@ -124,9 +119,12 @@ impl<'a> fold::Folder for StandardLibraryInjector<'a> {
124
119
}
125
120
}
126
121
127
- fn inject_crates_ref ( sess : & Session , krate : ast:: Crate ) -> ast:: Crate {
122
+ fn inject_crates_ref ( krate : ast:: Crate ,
123
+ alt_std_name : Option < String > ,
124
+ any_exe : bool ) -> ast:: Crate {
128
125
let mut fold = StandardLibraryInjector {
129
- sess : sess,
126
+ alt_std_name : alt_std_name,
127
+ any_exe : any_exe,
130
128
} ;
131
129
fold. fold_crate ( krate)
132
130
}
@@ -231,7 +229,7 @@ impl<'a> fold::Folder for PreludeInjector<'a> {
231
229
}
232
230
}
233
231
234
- fn inject_prelude ( _ : & Session , krate : ast:: Crate ) -> ast:: Crate {
232
+ fn inject_prelude ( krate : ast:: Crate ) -> ast:: Crate {
235
233
let mut fold = PreludeInjector ;
236
234
fold. fold_crate ( krate)
237
235
}
0 commit comments