@@ -793,54 +793,47 @@ mod test {
793793 let tts = string_to_tts ( "macro_rules! zip (($a)=>($a))" . to_string ( ) ) ;
794794 let tts: & [ ast:: TokenTree ] = tts. as_slice ( ) ;
795795 match tts {
796- [ ast:: TtToken ( _, _ ) ,
796+ [ ast:: TtToken ( _, token :: IDENT ( name_macro_rules , false ) ) ,
797797 ast:: TtToken ( _, token:: NOT ) ,
798- ast:: TtToken ( _, _) ,
799- ast:: TtDelimited ( _, ast:: TtToken ( _, token:: LPAREN ) ,
800- ref delim_elts,
801- ast:: TtToken ( _, token:: RPAREN ) ) ] => {
802- let delim_elts: & [ ast:: TokenTree ] = delim_elts. as_slice ( ) ;
803- match delim_elts {
804- [ ast:: TtDelimited ( _, ast:: TtToken ( _, token:: LPAREN ) ,
805- ref first_set,
806- ast:: TtToken ( _, token:: RPAREN ) ) ,
807- ast:: TtToken ( _, token:: FAT_ARROW ) ,
808- ast:: TtDelimited ( _, ast:: TtToken ( _, token:: LPAREN ) ,
809- ref second_set,
810- ast:: TtToken ( _, token:: RPAREN ) ) ] => {
811- let first_set: & [ ast:: TokenTree ] =
812- first_set. as_slice ( ) ;
813- match first_set {
814- [ ast:: TtToken ( _, token:: DOLLAR ) , ast:: TtToken ( _, _) ] => {
815- let second_set: & [ ast:: TokenTree ] =
816- second_set. as_slice ( ) ;
817- match second_set {
818- [ ast:: TtToken ( _, token:: DOLLAR ) , ast:: TtToken ( _, _) ] => {
819- assert_eq ! ( "correct" , "correct" )
820- }
821- _ => assert_eq ! ( "wrong 4" , "correct" )
822- }
823- } ,
824- _ => {
825- error ! ( "failing value 3: {}" , first_set) ;
826- assert_eq ! ( "wrong 3" , "correct" )
827- }
798+ ast:: TtToken ( _, token:: IDENT ( name_zip, false ) ) ,
799+ ast:: TtDelimited ( _, ref macro_delimed) ]
800+ if name_macro_rules. as_str ( ) == "macro_rules"
801+ && name_zip. as_str ( ) == "zip" => {
802+ let ( ref macro_open, ref macro_tts, ref macro_close) = * * macro_delimed;
803+ match ( macro_open, macro_tts. as_slice ( ) , macro_close) {
804+ ( & ast:: Delimiter { token : token:: LPAREN , .. } ,
805+ [ ast:: TtDelimited ( _, ref first_delimed) ,
806+ ast:: TtToken ( _, token:: FAT_ARROW ) ,
807+ ast:: TtDelimited ( _, ref second_delimed) ] ,
808+ & ast:: Delimiter { token : token:: RPAREN , .. } ) => {
809+ let ( ref first_open, ref first_tts, ref first_close) = * * first_delimed;
810+ match ( first_open, first_tts. as_slice ( ) , first_close) {
811+ ( & ast:: Delimiter { token : token:: LPAREN , .. } ,
812+ [ ast:: TtToken ( _, token:: DOLLAR ) ,
813+ ast:: TtToken ( _, token:: IDENT ( name, false ) ) ] ,
814+ & ast:: Delimiter { token : token:: RPAREN , .. } )
815+ if name. as_str ( ) == "a" => { } ,
816+ _ => fail ! ( "value 3: {}" , * * first_delimed) ,
817+ }
818+ let ( ref second_open, ref second_tts, ref second_close) = * * second_delimed;
819+ match ( second_open, second_tts. as_slice ( ) , second_close) {
820+ ( & ast:: Delimiter { token : token:: LPAREN , .. } ,
821+ [ ast:: TtToken ( _, token:: DOLLAR ) ,
822+ ast:: TtToken ( _, token:: IDENT ( name, false ) ) ] ,
823+ & ast:: Delimiter { token : token:: RPAREN , .. } )
824+ if name. as_str ( ) == "a" => { } ,
825+ _ => fail ! ( "value 4: {}" , * * second_delimed) ,
828826 }
829827 } ,
830- _ => {
831- error ! ( "failing value 2: {}" , delim_elts) ;
832- assert_eq ! ( "wrong" , "correct" ) ;
833- }
828+ _ => fail ! ( "value 2: {}" , * * macro_delimed) ,
834829 }
835830 } ,
836- _ => {
837- error ! ( "failing value: {}" , tts) ;
838- assert_eq ! ( "wrong 1" , "correct" ) ;
839- } ,
831+ _ => fail ! ( "value: {}" , tts) ,
840832 }
841833 }
842834
843- #[ test] fn string_to_tts_1 ( ) {
835+ #[ test]
836+ fn string_to_tts_1 ( ) {
844837 let tts = string_to_tts ( "fn a (b : int) { b; }" . to_string ( ) ) ;
845838 assert_eq ! ( json:: encode( & tts) ,
846839 "[\
@@ -873,94 +866,88 @@ mod test {
873866 {\
874867 \" variant\" :\" TtDelimited\" ,\
875868 \" fields\" :[\
869+ null,\
876870 [\
877871 {\
878- \" variant\" :\" TtToken\" ,\
879- \" fields\" :[\
880- null,\
881- \" LPAREN\" \
882- ]\
883- },\
884- {\
885- \" variant\" :\" TtToken\" ,\
886- \" fields\" :[\
887- null,\
888- {\
889- \" variant\" :\" IDENT\" ,\
890- \" fields\" :[\
891- \" b\" ,\
892- false\
893- ]\
894- }\
895- ]\
896- },\
897- {\
898- \" variant\" :\" TtToken\" ,\
899- \" fields\" :[\
900- null,\
901- \" COLON\" \
902- ]\
903- },\
904- {\
905- \" variant\" :\" TtToken\" ,\
906- \" fields\" :[\
907- null,\
908- {\
909- \" variant\" :\" IDENT\" ,\
910- \" fields\" :[\
911- \" int\" ,\
912- false\
913- ]\
914- }\
915- ]\
872+ \" span\" :null,\
873+ \" token\" :\" LPAREN\" \
916874 },\
875+ [\
876+ {\
877+ \" variant\" :\" TtToken\" ,\
878+ \" fields\" :[\
879+ null,\
880+ {\
881+ \" variant\" :\" IDENT\" ,\
882+ \" fields\" :[\
883+ \" b\" ,\
884+ false\
885+ ]\
886+ }\
887+ ]\
888+ },\
889+ {\
890+ \" variant\" :\" TtToken\" ,\
891+ \" fields\" :[\
892+ null,\
893+ \" COLON\" \
894+ ]\
895+ },\
896+ {\
897+ \" variant\" :\" TtToken\" ,\
898+ \" fields\" :[\
899+ null,\
900+ {\
901+ \" variant\" :\" IDENT\" ,\
902+ \" fields\" :[\
903+ \" int\" ,\
904+ false\
905+ ]\
906+ }\
907+ ]\
908+ }\
909+ ],\
917910 {\
918- \" variant\" :\" TtToken\" ,\
919- \" fields\" :[\
920- null,\
921- \" RPAREN\" \
922- ]\
911+ \" span\" :null,\
912+ \" token\" :\" RPAREN\" \
923913 }\
924914 ]\
925915 ]\
926916 },\
927917 {\
928918 \" variant\" :\" TtDelimited\" ,\
929919 \" fields\" :[\
920+ null,\
930921 [\
931922 {\
932- \" variant\" :\" TtToken\" ,\
933- \" fields\" :[\
934- null,\
935- \" LBRACE\" \
936- ]\
937- },\
938- {\
939- \" variant\" :\" TtToken\" ,\
940- \" fields\" :[\
941- null,\
942- {\
943- \" variant\" :\" IDENT\" ,\
944- \" fields\" :[\
945- \" b\" ,\
946- false\
947- ]\
948- }\
949- ]\
950- },\
951- {\
952- \" variant\" :\" TtToken\" ,\
953- \" fields\" :[\
954- null,\
955- \" SEMI\" \
956- ]\
923+ \" span\" :null,\
924+ \" token\" :\" LBRACE\" \
957925 },\
926+ [\
927+ {\
928+ \" variant\" :\" TtToken\" ,\
929+ \" fields\" :[\
930+ null,\
931+ {\
932+ \" variant\" :\" IDENT\" ,\
933+ \" fields\" :[\
934+ \" b\" ,\
935+ false\
936+ ]\
937+ }\
938+ ]\
939+ },\
940+ {\
941+ \" variant\" :\" TtToken\" ,\
942+ \" fields\" :[\
943+ null,\
944+ \" SEMI\" \
945+ ]\
946+ }\
947+ ],\
958948 {\
959- \" variant\" :\" TtToken\" ,\
960- \" fields\" :[\
961- null,\
962- \" RBRACE\" \
963- ]\
949+ \" span\" :null,\
950+ \" token\" :\" RBRACE\" \
964951 }\
965952 ]\
966953 ]\
0 commit comments