tint/reader/wgsl: Minor cleanups

Change-Id: I3fccb7f5c31c27da5118d9ec6ed86d4a9c3157ed
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/105400
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
Ben Clayton 2022-10-11 18:21:42 +00:00 committed by Dawn LUCI CQ
parent d04c54e178
commit ae832a2c6a
1 changed files with 32 additions and 21 deletions

View File

@ -23,6 +23,17 @@ using WhileStmtTest = ParserImplTest;
// Test an empty while loop. // Test an empty while loop.
TEST_F(WhileStmtTest, Empty) { TEST_F(WhileStmtTest, Empty) {
auto p = parser("while true { }");
auto wl = p->while_statement();
EXPECT_FALSE(p->has_error()) << p->error();
EXPECT_FALSE(wl.errored);
ASSERT_TRUE(wl.matched);
EXPECT_TRUE(Is<ast::Expression>(wl->condition));
EXPECT_TRUE(wl->body->Empty());
}
// Test an empty while loop with parentheses.
TEST_F(WhileStmtTest, EmptyWithParentheses) {
auto p = parser("while (true) { }"); auto p = parser("while (true) { }");
auto wl = p->while_statement(); auto wl = p->while_statement();
EXPECT_FALSE(p->has_error()) << p->error(); EXPECT_FALSE(p->has_error()) << p->error();
@ -46,17 +57,6 @@ TEST_F(WhileStmtTest, Body) {
// Test a while loop with complex condition. // Test a while loop with complex condition.
TEST_F(WhileStmtTest, ComplexCondition) { TEST_F(WhileStmtTest, ComplexCondition) {
auto p = parser("while ((a + 1 - 2) == 3) { }");
auto wl = p->while_statement();
EXPECT_FALSE(p->has_error()) << p->error();
EXPECT_FALSE(wl.errored);
ASSERT_TRUE(wl.matched);
EXPECT_TRUE(Is<ast::Expression>(wl->condition));
EXPECT_TRUE(wl->body->Empty());
}
// Test a while loop with no brackets.
TEST_F(WhileStmtTest, NoBrackets) {
auto p = parser("while (a + 1 - 2) == 3 { }"); auto p = parser("while (a + 1 - 2) == 3 { }");
auto wl = p->while_statement(); auto wl = p->while_statement();
EXPECT_FALSE(p->has_error()) << p->error(); EXPECT_FALSE(p->has_error()) << p->error();
@ -66,9 +66,20 @@ TEST_F(WhileStmtTest, NoBrackets) {
EXPECT_TRUE(wl->body->Empty()); EXPECT_TRUE(wl->body->Empty());
} }
// Test a while loop with complex condition, with parentheses.
TEST_F(WhileStmtTest, ComplexConditionWithParentheses) {
auto p = parser("while ((a + 1 - 2) == 3) { }");
auto wl = p->while_statement();
EXPECT_FALSE(p->has_error()) << p->error();
EXPECT_FALSE(wl.errored);
ASSERT_TRUE(wl.matched);
EXPECT_TRUE(Is<ast::Expression>(wl->condition));
EXPECT_TRUE(wl->body->Empty());
}
class WhileStmtErrorTest : public ParserImplTest { class WhileStmtErrorTest : public ParserImplTest {
public: public:
void TestForWithError(std::string for_str, std::string error_str) { void TestWhileWithError(std::string for_str, std::string error_str) {
auto p_for = parser(for_str); auto p_for = parser(for_str);
auto e_for = p_for->while_statement(); auto e_for = p_for->while_statement();
@ -85,7 +96,7 @@ TEST_F(WhileStmtErrorTest, MissingLeftParen) {
std::string while_str = "while bool) { }"; std::string while_str = "while bool) { }";
std::string error_str = "1:11: expected '(' for type constructor"; std::string error_str = "1:11: expected '(' for type constructor";
TestForWithError(while_str, error_str); TestWhileWithError(while_str, error_str);
} }
// Test a while loop with missing condition is invalid. // Test a while loop with missing condition is invalid.
@ -93,7 +104,7 @@ TEST_F(WhileStmtErrorTest, MissingFirstSemicolon) {
std::string while_str = "while () {}"; std::string while_str = "while () {}";
std::string error_str = "1:8: unable to parse expression"; std::string error_str = "1:8: unable to parse expression";
TestForWithError(while_str, error_str); TestWhileWithError(while_str, error_str);
} }
// Test a while loop with missing right parenthesis is invalid. // Test a while loop with missing right parenthesis is invalid.
@ -101,7 +112,7 @@ TEST_F(WhileStmtErrorTest, MissingRightParen) {
std::string while_str = "while (true {}"; std::string while_str = "while (true {}";
std::string error_str = "1:13: expected ')'"; std::string error_str = "1:13: expected ')'";
TestForWithError(while_str, error_str); TestWhileWithError(while_str, error_str);
} }
// Test a while loop with missing left brace is invalid. // Test a while loop with missing left brace is invalid.
@ -109,7 +120,7 @@ TEST_F(WhileStmtErrorTest, MissingLeftBrace) {
std::string while_str = "while (true) }"; std::string while_str = "while (true) }";
std::string error_str = "1:14: expected '{'"; std::string error_str = "1:14: expected '{'";
TestForWithError(while_str, error_str); TestWhileWithError(while_str, error_str);
} }
// Test a for loop with missing right brace is invalid. // Test a for loop with missing right brace is invalid.
@ -117,7 +128,7 @@ TEST_F(WhileStmtErrorTest, MissingRightBrace) {
std::string while_str = "while (true) {"; std::string while_str = "while (true) {";
std::string error_str = "1:15: expected '}'"; std::string error_str = "1:15: expected '}'";
TestForWithError(while_str, error_str); TestWhileWithError(while_str, error_str);
} }
// Test a while loop with an invalid break condition. // Test a while loop with an invalid break condition.
@ -125,7 +136,7 @@ TEST_F(WhileStmtErrorTest, InvalidBreakConditionAsExpression) {
std::string while_str = "while ((0 == 1) { }"; std::string while_str = "while ((0 == 1) { }";
std::string error_str = "1:17: expected ')'"; std::string error_str = "1:17: expected ')'";
TestForWithError(while_str, error_str); TestWhileWithError(while_str, error_str);
} }
// Test a while loop with a break condition not matching // Test a while loop with a break condition not matching
@ -134,7 +145,7 @@ TEST_F(WhileStmtErrorTest, InvalidBreakConditionMatch) {
std::string while_str = "while (var i: i32 = 0) { }"; std::string while_str = "while (var i: i32 = 0) { }";
std::string error_str = "1:8: unable to parse expression"; std::string error_str = "1:8: unable to parse expression";
TestForWithError(while_str, error_str); TestWhileWithError(while_str, error_str);
} }
// Test a while loop with an invalid body. // Test a while loop with an invalid body.
@ -142,7 +153,7 @@ TEST_F(WhileStmtErrorTest, InvalidBody) {
std::string while_str = "while (true) { let x: i32; }"; std::string while_str = "while (true) { let x: i32; }";
std::string error_str = "1:26: expected '=' for 'let' declaration"; std::string error_str = "1:26: expected '=' for 'let' declaration";
TestForWithError(while_str, error_str); TestWhileWithError(while_str, error_str);
} }
// Test a for loop with a body not matching statements // Test a for loop with a body not matching statements
@ -150,7 +161,7 @@ TEST_F(WhileStmtErrorTest, InvalidBodyMatch) {
std::string while_str = "while (true) { fn main() {} }"; std::string while_str = "while (true) { fn main() {} }";
std::string error_str = "1:16: expected '}'"; std::string error_str = "1:16: expected '}'";
TestForWithError(while_str, error_str); TestWhileWithError(while_str, error_str);
} }
} // namespace } // namespace