Skip to content

Commit 8678473

Browse files
committed
add test_template_list test
1 parent 4d96068 commit 8678473

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

naga/src/front/wgsl/parse/lexer.rs

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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]
8981000
fn test_comments() {
8991001
sub_test("// Single comment", &[]);

0 commit comments

Comments
 (0)