@@ -894,6 +894,108 @@ fn test_variable_decl() {
894894 ) ;
895895}
896896
897+ #[ test]
898+ fn test_template_list ( ) {
899+ sub_test (
900+ "A<B||C>D" ,
901+ & [
902+ Token :: Word ( "A" ) ,
903+ Token :: Paren ( '<' ) ,
904+ Token :: Word ( "B" ) ,
905+ Token :: LogicalOperation ( '|' ) ,
906+ Token :: Word ( "C" ) ,
907+ Token :: Paren ( '>' ) ,
908+ Token :: Word ( "D" ) ,
909+ ] ,
910+ ) ;
911+ sub_test (
912+ "A(B<C,D>(E))" ,
913+ & [
914+ Token :: Word ( "A" ) ,
915+ Token :: Paren ( '(' ) ,
916+ Token :: Word ( "B" ) ,
917+ Token :: TemplateArgsStart ,
918+ Token :: Word ( "C" ) ,
919+ Token :: Separator ( ',' ) ,
920+ Token :: Word ( "D" ) ,
921+ Token :: TemplateArgsEnd ,
922+ Token :: Paren ( '(' ) ,
923+ Token :: Word ( "E" ) ,
924+ Token :: Paren ( ')' ) ,
925+ Token :: Paren ( ')' ) ,
926+ ] ,
927+ ) ;
928+ sub_test (
929+ "array<i32,select(2,3,A>B)>" ,
930+ & [
931+ Token :: Word ( "array" ) ,
932+ Token :: TemplateArgsStart ,
933+ Token :: Word ( "i32" ) ,
934+ Token :: Separator ( ',' ) ,
935+ Token :: Word ( "select" ) ,
936+ Token :: Paren ( '(' ) ,
937+ Token :: Number ( Ok ( Number :: AbstractInt ( 2 ) ) ) ,
938+ Token :: Separator ( ',' ) ,
939+ Token :: Number ( Ok ( Number :: AbstractInt ( 3 ) ) ) ,
940+ Token :: Separator ( ',' ) ,
941+ Token :: Word ( "A" ) ,
942+ Token :: Paren ( '>' ) ,
943+ Token :: Word ( "B" ) ,
944+ Token :: Paren ( ')' ) ,
945+ Token :: TemplateArgsEnd ,
946+ ] ,
947+ ) ;
948+ sub_test (
949+ "A[B<C]>D" ,
950+ & [
951+ Token :: Word ( "A" ) ,
952+ Token :: Paren ( '[' ) ,
953+ Token :: Word ( "B" ) ,
954+ Token :: Paren ( '<' ) ,
955+ Token :: Word ( "C" ) ,
956+ Token :: Paren ( ']' ) ,
957+ Token :: Paren ( '>' ) ,
958+ Token :: Word ( "D" ) ,
959+ ] ,
960+ ) ;
961+ sub_test (
962+ "A<B<<C>" ,
963+ & [
964+ Token :: Word ( "A" ) ,
965+ Token :: TemplateArgsStart ,
966+ Token :: Word ( "B" ) ,
967+ Token :: ShiftOperation ( '<' ) ,
968+ Token :: Word ( "C" ) ,
969+ Token :: TemplateArgsEnd ,
970+ ] ,
971+ ) ;
972+ sub_test (
973+ "A<(B>=C)>" ,
974+ & [
975+ Token :: Word ( "A" ) ,
976+ Token :: TemplateArgsStart ,
977+ Token :: Paren ( '(' ) ,
978+ Token :: Word ( "B" ) ,
979+ Token :: LogicalOperation ( '>' ) ,
980+ Token :: Word ( "C" ) ,
981+ Token :: Paren ( ')' ) ,
982+ Token :: TemplateArgsEnd ,
983+ ] ,
984+ ) ;
985+ sub_test (
986+ "A<B>=C>" ,
987+ & [
988+ Token :: Word ( "A" ) ,
989+ Token :: TemplateArgsStart ,
990+ Token :: Word ( "B" ) ,
991+ Token :: TemplateArgsEnd ,
992+ Token :: Operation ( '=' ) ,
993+ Token :: Word ( "C" ) ,
994+ Token :: Paren ( '>' ) ,
995+ ] ,
996+ ) ;
997+ }
998+
897999#[ test]
8981000fn test_comments ( ) {
8991001 sub_test ( "// Single comment" , & [ ] ) ;
0 commit comments