@@ -793,54 +793,47 @@ mod test {
793
793
let tts = string_to_tts ( "macro_rules! zip (($a)=>($a))" . to_string ( ) ) ;
794
794
let tts: & [ ast:: TokenTree ] = tts. as_slice ( ) ;
795
795
match tts {
796
- [ ast:: TtToken ( _, _ ) ,
796
+ [ ast:: TtToken ( _, token :: IDENT ( name_macro_rules , false ) ) ,
797
797
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) ,
828
826
}
829
827
} ,
830
- _ => {
831
- error ! ( "failing value 2: {}" , delim_elts) ;
832
- assert_eq ! ( "wrong" , "correct" ) ;
833
- }
828
+ _ => fail ! ( "value 2: {}" , * * macro_delimed) ,
834
829
}
835
830
} ,
836
- _ => {
837
- error ! ( "failing value: {}" , tts) ;
838
- assert_eq ! ( "wrong 1" , "correct" ) ;
839
- } ,
831
+ _ => fail ! ( "value: {}" , tts) ,
840
832
}
841
833
}
842
834
843
- #[ test] fn string_to_tts_1 ( ) {
835
+ #[ test]
836
+ fn string_to_tts_1 ( ) {
844
837
let tts = string_to_tts ( "fn a (b : int) { b; }" . to_string ( ) ) ;
845
838
assert_eq ! ( json:: encode( & tts) ,
846
839
"[\
@@ -873,94 +866,88 @@ mod test {
873
866
{\
874
867
\" variant\" :\" TtDelimited\" ,\
875
868
\" fields\" :[\
869
+ null,\
876
870
[\
877
871
{\
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\" \
916
874
},\
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
+ ],\
917
910
{\
918
- \" variant\" :\" TtToken\" ,\
919
- \" fields\" :[\
920
- null,\
921
- \" RPAREN\" \
922
- ]\
911
+ \" span\" :null,\
912
+ \" token\" :\" RPAREN\" \
923
913
}\
924
914
]\
925
915
]\
926
916
},\
927
917
{\
928
918
\" variant\" :\" TtDelimited\" ,\
929
919
\" fields\" :[\
920
+ null,\
930
921
[\
931
922
{\
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\" \
957
925
},\
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
+ ],\
958
948
{\
959
- \" variant\" :\" TtToken\" ,\
960
- \" fields\" :[\
961
- null,\
962
- \" RBRACE\" \
963
- ]\
949
+ \" span\" :null,\
950
+ \" token\" :\" RBRACE\" \
964
951
}\
965
952
]\
966
953
]\
0 commit comments