Add unit test to check LHS is not an intrinsic function name
Identifiers cannot be assigned.
Bug: tint:203
Change-Id: Ibe34749264024b690d8a8bd271304f425a2688ed
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/54080
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Auto-Submit: Sarah Mashayekhi <sarahmashay@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Sarah Mashayekhi <sarahmashay@google.com>
diff --git a/src/reader/wgsl/parser_impl_error_msg_test.cc b/src/reader/wgsl/parser_impl_error_msg_test.cc
index e1e8a97..1e65e63 100644
--- a/src/reader/wgsl/parser_impl_error_msg_test.cc
+++ b/src/reader/wgsl/parser_impl_error_msg_test.cc
@@ -86,6 +86,13 @@
" ^\n");
}
+TEST_F(ParserImplErrorTest, AssignmentStmtInvalidLHS_IntrinsicFunctionName) {
+ EXPECT("normalize = 5;",
+ "test.wgsl:1:1 error: statement found outside of function body\n"
+ "normalize = 5;\n"
+ "^^^^^^^^^\n");
+}
+
TEST_F(ParserImplErrorTest, AssignmentStmtInvalidRHS) {
EXPECT("fn f() { a = >; }",
"test.wgsl:1:14 error: unable to parse right side of assignment\n"
diff --git a/src/resolver/validation_test.cc b/src/resolver/validation_test.cc
index aa53bce..25ce629 100644
--- a/src/resolver/validation_test.cc
+++ b/src/resolver/validation_test.cc
@@ -141,6 +141,19 @@
EXPECT_EQ(r()->error(), "3:8 error: missing '(' for intrinsic call");
}
+TEST_F(ResolverValidationTest,
+ AssignmentStmt_InvalidLHS_IntrinsicFunctionName) {
+ // normalize = 2;
+
+ auto* lhs = Expr(Source{{12, 34}}, "normalize");
+ auto* rhs = Expr(2);
+ auto* assign = Assign(lhs, rhs);
+ WrapInFunction(assign);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(), "12:34 error: missing '(' for intrinsic call");
+}
+
TEST_F(ResolverValidationTest, UsingUndefinedVariable_Fail) {
// b = 2;