@@ -975,8 +975,19 @@ fn new_span(cx: &ExtCtxt, sp: Span) -> Span {
975
975
}
976
976
977
977
pub struct ExpansionConfig {
978
- pub deriving_hash_type_parameter : bool ,
979
978
pub crate_name : String ,
979
+ pub deriving_hash_type_parameter : bool ,
980
+ pub enable_quotes : bool ,
981
+ }
982
+
983
+ impl ExpansionConfig {
984
+ pub fn default ( crate_name : String ) -> ExpansionConfig {
985
+ ExpansionConfig {
986
+ crate_name : crate_name,
987
+ deriving_hash_type_parameter : false ,
988
+ enable_quotes : false ,
989
+ }
990
+ }
980
991
}
981
992
982
993
pub struct ExportedMacros {
@@ -1106,7 +1117,7 @@ impl<'a, 'v> Visitor<'v> for MacroExterminator<'a> {
1106
1117
#[ cfg( test) ]
1107
1118
mod test {
1108
1119
use super :: { pattern_bindings, expand_crate, contains_macro_escape} ;
1109
- use super :: { PatIdentFinder , IdentRenamer , PatIdentRenamer } ;
1120
+ use super :: { PatIdentFinder , IdentRenamer , PatIdentRenamer , ExpansionConfig } ;
1110
1121
use ast;
1111
1122
use ast:: { Attribute_ , AttrOuter , MetaWord , Name } ;
1112
1123
use attr;
@@ -1171,6 +1182,10 @@ mod test {
1171
1182
// these following tests are quite fragile, in that they don't test what
1172
1183
// *kind* of failure occurs.
1173
1184
1185
+ fn test_ecfg ( ) -> ExpansionConfig {
1186
+ ExpansionConfig :: default ( "test" . to_string ( ) )
1187
+ }
1188
+
1174
1189
// make sure that macros can't escape fns
1175
1190
#[ should_fail]
1176
1191
#[ test] fn macros_cant_escape_fns_test ( ) {
@@ -1182,11 +1197,7 @@ mod test {
1182
1197
src,
1183
1198
Vec :: new ( ) , & sess) ;
1184
1199
// should fail:
1185
- let cfg = :: syntax:: ext:: expand:: ExpansionConfig {
1186
- deriving_hash_type_parameter : false ,
1187
- crate_name : "test" . to_string ( ) ,
1188
- } ;
1189
- expand_crate ( & sess, cfg, vec ! ( ) , vec ! ( ) , crate_ast) ;
1200
+ expand_crate ( & sess, test_ecfg ( ) , vec ! ( ) , vec ! ( ) , crate_ast) ;
1190
1201
}
1191
1202
1192
1203
// make sure that macros can't escape modules
@@ -1199,11 +1210,7 @@ mod test {
1199
1210
"<test>" . to_string ( ) ,
1200
1211
src,
1201
1212
Vec :: new ( ) , & sess) ;
1202
- let cfg = :: syntax:: ext:: expand:: ExpansionConfig {
1203
- deriving_hash_type_parameter : false ,
1204
- crate_name : "test" . to_string ( ) ,
1205
- } ;
1206
- expand_crate ( & sess, cfg, vec ! ( ) , vec ! ( ) , crate_ast) ;
1213
+ expand_crate ( & sess, test_ecfg ( ) , vec ! ( ) , vec ! ( ) , crate_ast) ;
1207
1214
}
1208
1215
1209
1216
// macro_escape modules should allow macros to escape
@@ -1215,11 +1222,7 @@ mod test {
1215
1222
"<test>" . to_string ( ) ,
1216
1223
src,
1217
1224
Vec :: new ( ) , & sess) ;
1218
- let cfg = :: syntax:: ext:: expand:: ExpansionConfig {
1219
- deriving_hash_type_parameter : false ,
1220
- crate_name : "test" . to_string ( ) ,
1221
- } ;
1222
- expand_crate ( & sess, cfg, vec ! ( ) , vec ! ( ) , crate_ast) ;
1225
+ expand_crate ( & sess, test_ecfg ( ) , vec ! ( ) , vec ! ( ) , crate_ast) ;
1223
1226
}
1224
1227
1225
1228
#[ test] fn test_contains_flatten ( ) {
@@ -1252,11 +1255,7 @@ mod test {
1252
1255
let ps = parse:: new_parse_sess ( ) ;
1253
1256
let crate_ast = string_to_parser ( & ps, crate_str) . parse_crate_mod ( ) ;
1254
1257
// the cfg argument actually does matter, here...
1255
- let cfg = :: syntax:: ext:: expand:: ExpansionConfig {
1256
- deriving_hash_type_parameter : false ,
1257
- crate_name : "test" . to_string ( ) ,
1258
- } ;
1259
- expand_crate ( & ps, cfg, vec ! ( ) , vec ! ( ) , crate_ast)
1258
+ expand_crate ( & ps, test_ecfg ( ) , vec ! ( ) , vec ! ( ) , crate_ast)
1260
1259
}
1261
1260
1262
1261
// find the pat_ident paths in a crate
0 commit comments