@@ -443,15 +443,15 @@ pub fn expand_view_item(vi: &ast::ViewItem,
443
443
}
444
444
445
445
fn load_extern_macros ( krate : & ast:: ViewItem , fld : & mut MacroExpander ) {
446
- let MacroCrate { lib, cnum } = fld. cx . loader . load_crate ( krate) ;
446
+ let MacroCrate { lib, cnum } = fld. cx . ecfg . loader . load_crate ( krate) ;
447
447
448
448
let crate_name = match krate. node {
449
449
ast:: ViewItemExternMod ( name, _, _) => name,
450
450
_ => unreachable ! ( )
451
451
} ;
452
452
let name = format ! ( "<{} macros>" , token:: get_ident( crate_name) ) ;
453
453
454
- let exported_macros = fld. cx . loader . get_exported_macros ( cnum) ;
454
+ let exported_macros = fld. cx . ecfg . loader . get_exported_macros ( cnum) ;
455
455
for source in exported_macros. iter ( ) {
456
456
let item = parse:: parse_item_from_source_str ( name. clone ( ) ,
457
457
( * source) . clone ( ) ,
@@ -468,7 +468,7 @@ fn load_extern_macros(krate: &ast::ViewItem, fld: &mut MacroExpander) {
468
468
// Make sure the path contains a / or the linker will search for it.
469
469
let path = os:: make_absolute ( & path) ;
470
470
471
- let registrar = match fld. cx . loader . get_registrar_symbol ( cnum) {
471
+ let registrar = match fld. cx . ecfg . loader . get_registrar_symbol ( cnum) {
472
472
Some ( registrar) => registrar,
473
473
None => return
474
474
} ;
@@ -823,10 +823,15 @@ impl<'a> Folder for MacroExpander<'a> {
823
823
}
824
824
}
825
825
826
+ pub struct ExpansionConfig < ' a > {
827
+ loader : & ' a mut CrateLoader ,
828
+ deriving_hash_type_parameter : bool ,
829
+ }
830
+
826
831
pub fn expand_crate ( parse_sess : @parse:: ParseSess ,
827
- loader : & mut CrateLoader ,
832
+ cfg : ExpansionConfig ,
828
833
c : Crate ) -> Crate {
829
- let mut cx = ExtCtxt :: new ( parse_sess, c. config . clone ( ) , loader ) ;
834
+ let mut cx = ExtCtxt :: new ( parse_sess, c. config . clone ( ) , cfg ) ;
830
835
let mut expander = MacroExpander {
831
836
extsbox : syntax_expander_table ( ) ,
832
837
cx : & mut cx,
@@ -995,7 +1000,11 @@ mod test {
995
1000
Vec::new(),sess);
996
1001
// should fail:
997
1002
let mut loader = ErrLoader;
998
- expand_crate(sess,&mut loader,crate_ast);
1003
+ let cfg = ::syntax::ext::expand::ExpansionConfig {
1004
+ loader: &mut loader,
1005
+ deriving_hash_type_parameter: false,
1006
+ };
1007
+ expand_crate(sess,cfg,crate_ast);
999
1008
}
1000
1009
1001
1010
// make sure that macros can leave scope for modules
@@ -1010,7 +1019,11 @@ mod test {
1010
1019
Vec::new(),sess);
1011
1020
// should fail:
1012
1021
let mut loader = ErrLoader;
1013
- expand_crate(sess,&mut loader,crate_ast);
1022
+ let cfg = ::syntax::ext::expand::ExpansionConfig {
1023
+ loader: &mut loader,
1024
+ deriving_hash_type_parameter: false,
1025
+ };
1026
+ expand_crate(sess,cfg,crate_ast);
1014
1027
}
1015
1028
1016
1029
// macro_escape modules shouldn't cause macros to leave scope
@@ -1024,7 +1037,11 @@ mod test {
1024
1037
Vec::new(), sess);
1025
1038
// should fail:
1026
1039
let mut loader = ErrLoader;
1027
- expand_crate(sess, &mut loader, crate_ast);
1040
+ let cfg = ::syntax::ext::expand::ExpansionConfig {
1041
+ loader: &mut loader,
1042
+ deriving_hash_type_parameter: false,
1043
+ };
1044
+ expand_crate(sess, cfg, crate_ast);
1028
1045
}
1029
1046
1030
1047
#[test] fn test_contains_flatten (){
@@ -1062,7 +1079,11 @@ mod test {
1062
1079
let ( crate_ast, ps) = string_to_crate_and_sess ( crate_str) ;
1063
1080
// the cfg argument actually does matter, here...
1064
1081
let mut loader = ErrLoader ;
1065
- expand_crate ( ps, & mut loader, crate_ast)
1082
+ let cfg = :: syntax:: ext:: expand:: ExpansionConfig {
1083
+ loader : & mut loader,
1084
+ deriving_hash_type_parameter : false ,
1085
+ } ;
1086
+ expand_crate ( ps, cfg, crate_ast)
1066
1087
}
1067
1088
1068
1089
//fn expand_and_resolve(crate_str: @str) -> ast::crate {
0 commit comments