@@ -443,15 +443,15 @@ pub fn expand_view_item(vi: &ast::ViewItem,
443443}
444444
445445fn 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) ;
447447
448448 let crate_name = match krate. node {
449449 ast:: ViewItemExternMod ( name, _, _) => name,
450450 _ => unreachable ! ( )
451451 } ;
452452 let name = format ! ( "<{} macros>" , token:: get_ident( crate_name) ) ;
453453
454- let exported_macros = fld. cx . loader . get_exported_macros ( cnum) ;
454+ let exported_macros = fld. cx . ecfg . loader . get_exported_macros ( cnum) ;
455455 for source in exported_macros. iter ( ) {
456456 let item = parse:: parse_item_from_source_str ( name. clone ( ) ,
457457 ( * source) . clone ( ) ,
@@ -468,7 +468,7 @@ fn load_extern_macros(krate: &ast::ViewItem, fld: &mut MacroExpander) {
468468 // Make sure the path contains a / or the linker will search for it.
469469 let path = os:: make_absolute ( & path) ;
470470
471- let registrar = match fld. cx . loader . get_registrar_symbol ( cnum) {
471+ let registrar = match fld. cx . ecfg . loader . get_registrar_symbol ( cnum) {
472472 Some ( registrar) => registrar,
473473 None => return
474474 } ;
@@ -823,10 +823,15 @@ impl<'a> Folder for MacroExpander<'a> {
823823 }
824824}
825825
826+ pub struct ExpansionConfig < ' a > {
827+ loader : & ' a mut CrateLoader ,
828+ deriving_hash_type_parameter : bool ,
829+ }
830+
826831pub fn expand_crate ( parse_sess : @parse:: ParseSess ,
827- loader : & mut CrateLoader ,
832+ cfg : ExpansionConfig ,
828833 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 ) ;
830835 let mut expander = MacroExpander {
831836 extsbox : syntax_expander_table ( ) ,
832837 cx : & mut cx,
@@ -995,7 +1000,11 @@ mod test {
9951000 Vec::new(),sess);
9961001 // should fail:
9971002 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);
9991008 }
10001009
10011010 // make sure that macros can leave scope for modules
@@ -1010,7 +1019,11 @@ mod test {
10101019 Vec::new(),sess);
10111020 // should fail:
10121021 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);
10141027 }
10151028
10161029 // macro_escape modules shouldn't cause macros to leave scope
@@ -1024,7 +1037,11 @@ mod test {
10241037 Vec::new(), sess);
10251038 // should fail:
10261039 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);
10281045 }
10291046
10301047 #[test] fn test_contains_flatten (){
@@ -1062,7 +1079,11 @@ mod test {
10621079 let ( crate_ast, ps) = string_to_crate_and_sess ( crate_str) ;
10631080 // the cfg argument actually does matter, here...
10641081 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)
10661087 }
10671088
10681089 //fn expand_and_resolve(crate_str: @str) -> ast::crate {
0 commit comments