@@ -388,6 +388,51 @@ mod test {
388
388
string_to_expr ( @":: abc:: def:: return") ;
389
389
}
390
390
391
+ // check the token-tree-ization of macros
392
+ #[ test] fn string_to_tts_macro ( ) {
393
+ let tts = string_to_tts ( @"macro_rules! zip ( ( $a) =>( $a) ) ") ;
394
+ match tts {
395
+ [ ast:: tt_tok( _, _) ,
396
+ ast:: tt_tok( _, token:: NOT ) ,
397
+ ast:: tt_tok( _, _) ,
398
+ ast:: tt_delim( delim_elts) ] =>
399
+ match * delim_elts {
400
+ [ ast:: tt_tok( _, token:: LPAREN ) ,
401
+ ast:: tt_delim( first_set) ,
402
+ ast:: tt_tok( _, token:: FAT_ARROW ) ,
403
+ ast:: tt_delim( second_set) ,
404
+ ast:: tt_tok( _, token:: RPAREN ) ] =>
405
+ match * first_set {
406
+ [ ast:: tt_tok( _, token:: LPAREN ) ,
407
+ ast:: tt_tok( _, token:: DOLLAR ) ,
408
+ ast:: tt_tok( _, _) ,
409
+ ast:: tt_tok( _, token:: RPAREN ) ] =>
410
+ match * second_set {
411
+ [ ast:: tt_tok( _, token:: LPAREN ) ,
412
+ ast:: tt_tok( _, token:: DOLLAR ) ,
413
+ ast:: tt_tok( _, _) ,
414
+ ast:: tt_tok( _, token:: RPAREN ) ] =>
415
+ assert_eq ! ( "correct" , "correct" ) ,
416
+ _ => assert_eq ! ( "wrong 4" , "correct" )
417
+ } ,
418
+ _ => {
419
+ error ! ( "failing value 3: %?" , first_set) ;
420
+ assert_eq ! ( "wrong 3" , "correct" )
421
+ }
422
+ } ,
423
+ _ => {
424
+ error ! ( "failing value 2: %?" , delim_elts) ;
425
+ assert_eq ! ( "wrong" , "correct" ) ;
426
+ }
427
+
428
+ } ,
429
+ _ => {
430
+ error ! ( "failing value: %?" , tts) ;
431
+ assert_eq ! ( "wrong 1" , "correct" ) ;
432
+ }
433
+ }
434
+ }
435
+
391
436
#[ test] fn string_to_tts_1 ( ) {
392
437
let tts = string_to_tts ( @"fn a ( b : int) { b; } ") ;
393
438
assert_eq ! ( to_json_str( @tts) ,
0 commit comments