classify template args: add cases used to debug Treesitter scanner

Change-Id: Ie27b217d68a2bae7d86b99d4268be11a7f47279f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/121540
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
David Neto 2023-02-27 16:26:31 +00:00 committed by Dawn LUCI CQ
parent 6176c85be8
commit c5ec169b89
1 changed files with 193 additions and 0 deletions

View File

@ -479,5 +479,198 @@ INSTANTIATE_TEST_SUITE_P(Template,
},
}));
INSTANTIATE_TEST_SUITE_P(TreesitterScannerSeparatingCases,
ClassifyTemplateArgsTest,
testing::ValuesIn(std::vector<Case>{
// Treesitter had trouble missing '=' in its lookahead
{
"a<b>=c",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kIdentifier, // b
T::kTemplateArgsRight, // >
T::kEqual, // =
T::kIdentifier, // c
T::kEOF,
},
},
{
"a<b>>=c",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kIdentifier, // b
T::kTemplateArgsRight, // >
T::kGreaterThanEqual, // >=
T::kPlaceholder, // <placeholder>
T::kIdentifier, // c
T::kEOF,
},
},
{
"a<b==c>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kIdentifier, // b
T::kEqualEqual, // ==
T::kIdentifier, // c
T::kTemplateArgsRight, // >
T::kEOF,
},
},
{
"a<(b==c)>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kParenLeft, // (
T::kIdentifier, // b
T::kEqualEqual, // ==
T::kIdentifier, // c
T::kParenRight, // )
T::kTemplateArgsRight, // >
T::kEOF,
},
},
{
"a<b<=c>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kIdentifier, // b
T::kLessThanEqual, // <=
T::kIdentifier, // c
T::kTemplateArgsRight, // >
T::kEOF,
},
},
{
"a<(b<=c)>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kParenLeft, // (
T::kIdentifier, // b
T::kLessThanEqual, // <=
T::kIdentifier, // c
T::kParenRight, // )
T::kTemplateArgsRight, // >
T::kEOF,
},
},
{
"a<b>=c>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kIdentifier, // b
T::kTemplateArgsRight, // >
T::kEqual, // =
T::kIdentifier, // c
T::kGreaterThan, // >
T::kEOF,
},
},
{
"a<(b<=c)>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kParenLeft, // (
T::kIdentifier, // b
T::kLessThanEqual, // <=
T::kIdentifier, // c
T::kParenRight, // )
T::kTemplateArgsRight, // >
T::kEOF,
},
},
{
"a<b>>c>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kIdentifier, // b
T::kTemplateArgsRight, // >
T::kGreaterThan, // >
T::kIdentifier, // c
T::kGreaterThan, // >
T::kEOF,
},
},
{
"a<b<<c>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kIdentifier, // b
T::kShiftLeft, // <<
T::kIdentifier, // c
T::kTemplateArgsRight, // >
T::kEOF,
},
},
{
"a<(b<<c)>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kParenLeft, // (
T::kIdentifier, // b
T::kShiftLeft, // <<
T::kIdentifier, // c
T::kParenRight, // )
T::kTemplateArgsRight, // >
T::kEOF,
},
},
{
"a<(b>>c)>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kParenLeft, // (
T::kIdentifier, // b
T::kShiftRight, // >>
T::kPlaceholder, // <placeholder>
T::kIdentifier, // c
T::kParenRight, // )
T::kTemplateArgsRight, // >
T::kEOF,
},
},
{
"a<1<<c>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kIntLiteral, // 1
T::kShiftLeft, // <<
T::kIdentifier, // c
T::kTemplateArgsRight, // >
T::kEOF,
},
},
{
"a<1<<c<d>()>",
{
T::kIdentifier, // a
T::kTemplateArgsLeft, // <
T::kIntLiteral, // 1
T::kShiftLeft, // <<
T::kIdentifier, // c
T::kTemplateArgsLeft, // <
T::kIdentifier, // d
T::kTemplateArgsRight, // >
T::kParenLeft, // (
T::kParenRight, // )
T::kTemplateArgsRight, // >
T::kEOF,
},
},
}));
} // namespace
} // namespace tint::reader::wgsl