From c5ec169b890ac8a16bffbb4f063cbede6f34294e Mon Sep 17 00:00:00 2001 From: David Neto Date: Mon, 27 Feb 2023 16:26:31 +0000 Subject: [PATCH] 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 Commit-Queue: David Neto Kokoro: Kokoro --- .../wgsl/classify_template_args_test.cc | 193 ++++++++++++++++++ 1 file changed, 193 insertions(+) diff --git a/src/tint/reader/wgsl/classify_template_args_test.cc b/src/tint/reader/wgsl/classify_template_args_test.cc index 9cf2c8f60b..e2833ee2bc 100644 --- a/src/tint/reader/wgsl/classify_template_args_test.cc +++ b/src/tint/reader/wgsl/classify_template_args_test.cc @@ -479,5 +479,198 @@ INSTANTIATE_TEST_SUITE_P(Template, }, })); +INSTANTIATE_TEST_SUITE_P(TreesitterScannerSeparatingCases, + ClassifyTemplateArgsTest, + testing::ValuesIn(std::vector{ + // Treesitter had trouble missing '=' in its lookahead + { + "a=c", + { + T::kIdentifier, // a + T::kTemplateArgsLeft, // < + T::kIdentifier, // b + T::kTemplateArgsRight, // > + T::kEqual, // = + T::kIdentifier, // c + T::kEOF, + }, + }, + { + "a>=c", + { + T::kIdentifier, // a + T::kTemplateArgsLeft, // < + T::kIdentifier, // b + T::kTemplateArgsRight, // > + T::kGreaterThanEqual, // >= + T::kPlaceholder, // + T::kIdentifier, // c + T::kEOF, + }, + }, + { + "a", + { + 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", + { + 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=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>c>", + { + T::kIdentifier, // a + T::kTemplateArgsLeft, // < + T::kIdentifier, // b + T::kTemplateArgsRight, // > + T::kGreaterThan, // > + T::kIdentifier, // c + T::kGreaterThan, // > + T::kEOF, + }, + }, + { + "a", + { + T::kIdentifier, // a + T::kTemplateArgsLeft, // < + T::kIdentifier, // b + T::kShiftLeft, // << + T::kIdentifier, // c + T::kTemplateArgsRight, // > + T::kEOF, + }, + }, + { + "a<(b<", + { + 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, // + T::kIdentifier, // c + T::kParenRight, // ) + T::kTemplateArgsRight, // > + T::kEOF, + }, + }, + { + "a<1<", + { + T::kIdentifier, // a + T::kTemplateArgsLeft, // < + T::kIntLiteral, // 1 + T::kShiftLeft, // << + T::kIdentifier, // c + T::kTemplateArgsRight, // > + T::kEOF, + }, + }, + { + "a<1<()>", + { + 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