tint: Remove semicolon as struct member delimeter

Fixup a couple of internal Dawn shaders that used this syntax.

Fixed: tint:1475
Change-Id: Ibd6b3309944bfd955e724fef5d71d1297a84ef5f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/93361
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
diff --git a/docs/tint/origin-trial-changes.md b/docs/tint/origin-trial-changes.md
index 3c78be9..80c209d 100644
--- a/docs/tint/origin-trial-changes.md
+++ b/docs/tint/origin-trial-changes.md
@@ -12,6 +12,7 @@
 * The `smoothStep()` builtin has been removed (use `smoothstep` instead). [tint:1483](crbug.com/tint/1483)
 * Module-scope `let` has been replaced with module-scope `const`. [tint:1580](crbug.com/tint/1584)
   * Note: Module-scope `const` does not support structure types. Use `var<private>` if you need a module-scope structure type.
+* Struct members can no longer be separated with semicolons (use commas instead). [tint:1475](crbug.com/tint/1475)
 
 ### Deprecated Features
 
diff --git a/src/dawn/native/ComputePassEncoder.cpp b/src/dawn/native/ComputePassEncoder.cpp
index 374ff6f..a7f9ef5 100644
--- a/src/dawn/native/ComputePassEncoder.cpp
+++ b/src/dawn/native/ComputePassEncoder.cpp
@@ -46,19 +46,19 @@
     Ref<ShaderModuleBase> shaderModule;
     DAWN_TRY_ASSIGN(shaderModule, utils::CreateShaderModule(device, R"(
                 struct UniformParams {
-                    maxComputeWorkgroupsPerDimension: u32;
-                    clientOffsetInU32: u32;
-                    enableValidation: u32;
-                    duplicateNumWorkgroups: u32;
-                };
+                    maxComputeWorkgroupsPerDimension: u32,
+                    clientOffsetInU32: u32,
+                    enableValidation: u32,
+                    duplicateNumWorkgroups: u32,
+                }
 
                 struct IndirectParams {
-                    data: array<u32>;
-                };
+                    data: array<u32>
+                }
 
                 struct ValidatedParams {
-                    data: array<u32>;
-                };
+                    data: array<u32>
+                }
 
                 @group(0) @binding(0) var<uniform> uniformParams: UniformParams;
                 @group(0) @binding(1) var<storage, read_write> clientParams: IndirectParams;
diff --git a/src/dawn/native/QueryHelper.cpp b/src/dawn/native/QueryHelper.cpp
index e72dfed..7832cb3 100644
--- a/src/dawn/native/QueryHelper.cpp
+++ b/src/dawn/native/QueryHelper.cpp
@@ -40,25 +40,25 @@
 
 static const char sConvertTimestampsToNanoseconds[] = R"(
             struct Timestamp {
-                low  : u32;
-                high : u32;
-            };
+                low  : u32,
+                high : u32,
+            }
 
             struct TimestampArr {
-                t : array<Timestamp>;
-            };
+                t : array<Timestamp>
+            }
 
             struct AvailabilityArr {
-                v : array<u32>;
-            };
+                v : array<u32>
+            }
 
             struct TimestampParams {
-                first  : u32;
-                count  : u32;
-                offset : u32;
-                multiplier : u32;
-                right_shift  : u32;
-            };
+                first  : u32,
+                count  : u32,
+                offset : u32,
+                multiplier : u32,
+                right_shift  : u32,
+            }
 
             @group(0) @binding(0) var<storage, read_write> timestamps : TimestampArr;
             @group(0) @binding(1) var<storage, read> availability : AvailabilityArr;
diff --git a/src/dawn/tests/unittests/validation/MinimumBufferSizeValidationTests.cpp b/src/dawn/tests/unittests/validation/MinimumBufferSizeValidationTests.cpp
index f27a46d..b8fbcde 100644
--- a/src/dawn/tests/unittests/validation/MinimumBufferSizeValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/MinimumBufferSizeValidationTests.cpp
@@ -541,7 +541,7 @@
     CheckShaderBindingSizeReflection({{{0, 0, "a : f32,", "f32", "a", 4},
                                        {0, 1, "b : array<f32>,", "f32", "b[0]", 4},
                                        {0, 2, "c : mat2x2<f32>,", "mat2x2<f32>", "c", 16}}});
-    CheckShaderBindingSizeReflection({{{0, 3, "d : u32; e : array<f32>,", "u32", "d", 8},
+    CheckShaderBindingSizeReflection({{{0, 3, "d : u32, e : array<f32>,", "u32", "d", 8},
                                        {0, 4, "f : ThreeFloats,", "f32", "f.f1", 12},
                                        {0, 5, "g : array<ThreeFloats>,", "f32", "g[0].f1", 12}}});
 }
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc
index c2d40d9..f201047 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc
@@ -275,8 +275,8 @@
     // (`read` for uniform storage class).
     std::string shader = R"(
 struct S {
-  a: i32;
-};
+  a: i32
+}
 
 var<private> a: S;
 @group(1) @binding(1) var<uniform> b: S;
@@ -310,8 +310,8 @@
     // Can't replace `ptr_b` with `a` since the latter is not a pointer.
     std::string shader = R"(
 struct S {
-  a: i32;
-};
+  a: i32
+}
 
 var<private> a: S;
 @group(1) @binding(1) var<uniform> b: S;
@@ -346,8 +346,8 @@
     // storage class.
     std::string shader = R"(
 struct S {
-  a: i32;
-};
+  a: i32
+}
 
 var<private> a: S;
 @group(1) @binding(1) var<uniform> b: S;
@@ -382,8 +382,8 @@
     // Can't replace `b` with `e` since the latter is not a reference.
     std::string shader = R"(
 struct S {
-  a: i32;
-};
+  a: i32
+}
 
 var<private> a: S;
 let e = 3;
@@ -418,8 +418,8 @@
     // Can't replace `b` with `e` since the latter has a wrong access mode.
     std::string shader = R"(
 struct S {
-  a: i32;
-};
+  a: i32
+}
 
 var<private> a: S;
 @group(0) @binding(0) var<storage, read_write> e: S;
diff --git a/src/tint/reader/wgsl/parser_impl.cc b/src/tint/reader/wgsl/parser_impl.cc
index deaa17c..94468c9 100644
--- a/src/tint/reader/wgsl/parser_impl.cc
+++ b/src/tint/reader/wgsl/parser_impl.cc
@@ -1348,12 +1348,6 @@
                 members.push_back(member.value);
             }
 
-            // TODO(crbug.com/tint/1475): Remove support for semicolons.
-            if (auto sc = peek(); sc.Is(Token::Type::kSemicolon)) {
-                deprecated(sc.source(), "struct members should be separated with commas");
-                next();
-                continue;
-            }
             if (!match(Token::Type::kComma)) {
                 break;
             }
diff --git a/src/tint/reader/wgsl/parser_impl_struct_decl_test.cc b/src/tint/reader/wgsl/parser_impl_struct_decl_test.cc
index 106ffd5..1c6d6bc 100644
--- a/src/tint/reader/wgsl/parser_impl_struct_decl_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_struct_decl_test.cc
@@ -104,23 +104,5 @@
     EXPECT_EQ(p->error(), "1:10: expected '{' for struct declaration");
 }
 
-// TODO(crbug.com/tint/1475): Remove this.
-TEST_F(ParserImplTest, DEPRECATED_StructDecl_Parses_WithSemicolons) {
-    auto p = parser(R"(
-struct S {
-  a : i32;
-  b : f32;
-})");
-    auto s = p->struct_decl();
-    EXPECT_FALSE(p->has_error());
-    EXPECT_FALSE(s.errored);
-    EXPECT_TRUE(s.matched);
-    ASSERT_NE(s.value, nullptr);
-    ASSERT_EQ(s->name, p->builder().Symbols().Register("S"));
-    ASSERT_EQ(s->members.size(), 2u);
-    EXPECT_EQ(s->members[0]->symbol, p->builder().Symbols().Register("a"));
-    EXPECT_EQ(s->members[1]->symbol, p->builder().Symbols().Register("b"));
-}
-
 }  // namespace
 }  // namespace tint::reader::wgsl