@@ -21,7 +21,7 @@ use attr::{AttrMetaMethods, WithAttrs};
21
21
use codemap;
22
22
use codemap:: { Span , Spanned , ExpnInfo , NameAndSpan , MacroBang , MacroAttribute } ;
23
23
use ext:: base:: * ;
24
- use feature_gate:: { self , Features , GatedCfgAttr } ;
24
+ use feature_gate:: { self , Features } ;
25
25
use fold;
26
26
use fold:: * ;
27
27
use util:: move_map:: MoveMap ;
@@ -1276,15 +1276,11 @@ impl<'feat> ExpansionConfig<'feat> {
1276
1276
}
1277
1277
}
1278
1278
1279
- pub fn expand_crate < ' feat > ( parse_sess : & parse:: ParseSess ,
1280
- cfg : ExpansionConfig < ' feat > ,
1281
- // these are the macros being imported to this crate:
1282
- imported_macros : Vec < ast:: MacroDef > ,
1283
- user_exts : Vec < NamedSyntaxExtension > ,
1284
- feature_gated_cfgs : & mut Vec < GatedCfgAttr > ,
1285
- c : Crate ) -> ( Crate , HashSet < Name > ) {
1286
- let mut cx = ExtCtxt :: new ( parse_sess, c. config . clone ( ) , cfg,
1287
- feature_gated_cfgs) ;
1279
+ pub fn expand_crate ( mut cx : ExtCtxt ,
1280
+ // these are the macros being imported to this crate:
1281
+ imported_macros : Vec < ast:: MacroDef > ,
1282
+ user_exts : Vec < NamedSyntaxExtension > ,
1283
+ c : Crate ) -> ( Crate , HashSet < Name > ) {
1288
1284
if std_inject:: no_core ( & c) {
1289
1285
cx. crate_root = None ;
1290
1286
} else if std_inject:: no_std ( & c) {
@@ -1305,7 +1301,7 @@ pub fn expand_crate<'feat>(parse_sess: &parse::ParseSess,
1305
1301
1306
1302
let mut ret = expander. fold_crate ( c) ;
1307
1303
ret. exported_macros = expander. cx . exported_macros . clone ( ) ;
1308
- parse_sess. span_diagnostic . handler ( ) . abort_if_errors ( ) ;
1304
+ cx . parse_sess . span_diagnostic . handler ( ) . abort_if_errors ( ) ;
1309
1305
ret
1310
1306
} ;
1311
1307
return ( ret, cx. syntax_env . names ) ;
@@ -1401,6 +1397,7 @@ mod tests {
1401
1397
use ast;
1402
1398
use ast:: Name ;
1403
1399
use codemap;
1400
+ use ext:: base:: ExtCtxt ;
1404
1401
use ext:: mtwt;
1405
1402
use fold:: Folder ;
1406
1403
use parse;
@@ -1471,7 +1468,9 @@ mod tests {
1471
1468
src,
1472
1469
Vec :: new ( ) , & sess) ;
1473
1470
// should fail:
1474
- expand_crate ( & sess, test_ecfg ( ) , vec ! ( ) , vec ! ( ) , & mut vec ! [ ] , crate_ast) ;
1471
+ let mut gated_cfgs = vec ! [ ] ;
1472
+ let ecx = ExtCtxt :: new ( & sess, vec ! [ ] , test_ecfg ( ) , & mut gated_cfgs) ;
1473
+ expand_crate ( ecx, vec ! [ ] , vec ! [ ] , crate_ast) ;
1475
1474
}
1476
1475
1477
1476
// make sure that macros can't escape modules
@@ -1484,7 +1483,9 @@ mod tests {
1484
1483
"<test>" . to_string ( ) ,
1485
1484
src,
1486
1485
Vec :: new ( ) , & sess) ;
1487
- expand_crate ( & sess, test_ecfg ( ) , vec ! ( ) , vec ! ( ) , & mut vec ! [ ] , crate_ast) ;
1486
+ let mut gated_cfgs = vec ! [ ] ;
1487
+ let ecx = ExtCtxt :: new ( & sess, vec ! [ ] , test_ecfg ( ) , & mut gated_cfgs) ;
1488
+ expand_crate ( ecx, vec ! [ ] , vec ! [ ] , crate_ast) ;
1488
1489
}
1489
1490
1490
1491
// macro_use modules should allow macros to escape
@@ -1496,14 +1497,18 @@ mod tests {
1496
1497
"<test>" . to_string ( ) ,
1497
1498
src,
1498
1499
Vec :: new ( ) , & sess) ;
1499
- expand_crate ( & sess, test_ecfg ( ) , vec ! ( ) , vec ! ( ) , & mut vec ! [ ] , crate_ast) ;
1500
+ let mut gated_cfgs = vec ! [ ] ;
1501
+ let ecx = ExtCtxt :: new ( & sess, vec ! [ ] , test_ecfg ( ) , & mut gated_cfgs) ;
1502
+ expand_crate ( ecx, vec ! [ ] , vec ! [ ] , crate_ast) ;
1500
1503
}
1501
1504
1502
1505
fn expand_crate_str ( crate_str : String ) -> ast:: Crate {
1503
1506
let ps = parse:: ParseSess :: new ( ) ;
1504
1507
let crate_ast = panictry ! ( string_to_parser( & ps, crate_str) . parse_crate_mod( ) ) ;
1505
1508
// the cfg argument actually does matter, here...
1506
- expand_crate ( & ps, test_ecfg ( ) , vec ! ( ) , vec ! ( ) , & mut vec ! [ ] , crate_ast) . 0
1509
+ let mut gated_cfgs = vec ! [ ] ;
1510
+ let ecx = ExtCtxt :: new ( & ps, vec ! [ ] , test_ecfg ( ) , & mut gated_cfgs) ;
1511
+ expand_crate ( ecx, vec ! [ ] , vec ! [ ] , crate_ast) . 0
1507
1512
}
1508
1513
1509
1514
// find the pat_ident paths in a crate
0 commit comments