@@ -21,8 +21,6 @@ use syntax::symbol::{keywords, Symbol};
21
21
use syntax_pos:: Span ;
22
22
use syntax:: tokenstream;
23
23
24
- use std:: env;
25
-
26
24
pub fn expand_option_env < ' cx > ( cx : & ' cx mut ExtCtxt ,
27
25
sp : Span ,
28
26
tts : & [ tokenstream:: TokenTree ] )
@@ -33,8 +31,10 @@ pub fn expand_option_env<'cx>(cx: &'cx mut ExtCtxt,
33
31
} ;
34
32
35
33
let sp = sp. apply_mark ( cx. current_expansion . mark ) ;
36
- let e = match env:: var ( & * var. as_str ( ) ) {
37
- Err ( ..) => {
34
+ let env_sb = cx. parse_sess ( ) . env_sandbox ( ) ;
35
+
36
+ let e = match env_sb. env_get ( & * var. as_str ( ) ) {
37
+ None => {
38
38
let lt = cx. lifetime ( sp, keywords:: StaticLifetime . ident ( ) ) ;
39
39
cx. expr_path ( cx. path_all ( sp,
40
40
true ,
@@ -46,7 +46,7 @@ pub fn expand_option_env<'cx>(cx: &'cx mut ExtCtxt,
46
46
ast:: Mutability :: Immutable ) ] ,
47
47
Vec :: new ( ) ) )
48
48
}
49
- Ok ( s) => {
49
+ Some ( s) => {
50
50
cx. expr_call_global ( sp,
51
51
cx. std_path ( & [ "option" , "Option" , "Some" ] ) ,
52
52
vec ! [ cx. expr_str( sp, Symbol :: intern( & s) ) ] )
@@ -68,6 +68,8 @@ pub fn expand_env<'cx>(cx: &'cx mut ExtCtxt,
68
68
Some ( exprs) => exprs. into_iter ( ) ,
69
69
} ;
70
70
71
+ let env_sb = cx. parse_sess ( ) . env_sandbox ( ) ;
72
+
71
73
let var = match expr_to_string ( cx, exprs. next ( ) . unwrap ( ) , "expected string literal" ) {
72
74
None => return DummyResult :: expr ( sp) ,
73
75
Some ( ( v, _style) ) => v,
@@ -87,12 +89,12 @@ pub fn expand_env<'cx>(cx: &'cx mut ExtCtxt,
87
89
return DummyResult :: expr ( sp) ;
88
90
}
89
91
90
- let e = match env :: var ( & * var. as_str ( ) ) {
91
- Err ( _ ) => {
92
+ let e = match env_sb . env_get ( & * var. as_str ( ) ) {
93
+ None => {
92
94
cx. span_err ( sp, & msg. as_str ( ) ) ;
93
95
cx. expr_usize ( sp, 0 )
94
96
}
95
- Ok ( s) => cx. expr_str ( sp, Symbol :: intern ( & s) ) ,
97
+ Some ( s) => cx. expr_str ( sp, Symbol :: intern ( & s) ) ,
96
98
} ;
97
99
MacEager :: expr ( e)
98
100
}
0 commit comments