wgsl: Separate struct members with commas

Use of semicolons is still supported, but deprecated.

Also updates the parsing methods for structures to better match the
WGSL grammar.

Bug: tint:1475
Change-Id: I7675ba42c13f91080b0ac173c352e0092021f80b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/84380
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
diff --git a/docs/tint/origin-trial-changes.md b/docs/tint/origin-trial-changes.md
index 8680fd3..db4e336 100644
--- a/docs/tint/origin-trial-changes.md
+++ b/docs/tint/origin-trial-changes.md
@@ -8,6 +8,7 @@
 
 ### Breaking changes
 
+* Struct members are now separated by commas. [tint:1475](crbug.com/tint/1475)
 * The `@block` attribute has been removed. [tint:1324](crbug.com/tint/1324)
 * The `@stride` attribute has been removed. [tint:1381](crbug.com/tint/1381)
 * Attributes using `[[attribute]]` syntax are no longer supported. [tint:1382](crbug.com/tint/1382)
diff --git a/src/tint/ast/module_clone_test.cc b/src/tint/ast/module_clone_test.cc
index 983d1b0..4e92f25 100644
--- a/src/tint/ast/module_clone_test.cc
+++ b/src/tint/ast/module_clone_test.cc
@@ -28,14 +28,14 @@
   // See also fuzzers/tint_ast_clone_fuzzer.cc for further coverage of cloning.
   Source::File file("test.wgsl", R"(struct S0 {
   @size(4)
-  m0 : u32;
-  m1 : array<u32>;
+  m0 : u32,
+  m1 : array<u32>,
 };
 
 struct S1 {
   @size(4)
-  m0 : u32;
-  m1 : array<u32, 6>;
+  m0 : u32,
+  m1 : array<u32, 6>,
 };
 
 let c0 : i32 = 10;
diff --git a/src/tint/reader/spirv/function_memory_test.cc b/src/tint/reader/spirv/function_memory_test.cc
index 605e851..4bbf9e5 100644
--- a/src/tint/reader/spirv/function_memory_test.cc
+++ b/src/tint/reader/spirv/function_memory_test.cc
@@ -953,8 +953,8 @@
   EXPECT_THAT(module_str, HasSubstr(R"(type RTArr = @stride(4) array<u32>;
 
 struct S {
-  field0 : u32;
-  field1 : RTArr;
+  field0 : u32,
+  field1 : RTArr,
 }
 
 @group(0) @binding(0) var<storage, read_write> myvar : S;
diff --git a/src/tint/reader/spirv/parser_impl_function_decl_test.cc b/src/tint/reader/spirv/parser_impl_function_decl_test.cc
index 9e6e8bf..b664dd1 100644
--- a/src/tint/reader/spirv/parser_impl_function_decl_test.cc
+++ b/src/tint/reader/spirv/parser_impl_function_decl_test.cc
@@ -125,7 +125,7 @@
   EXPECT_THAT(program_ast, HasSubstr(R"(
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 )")) << program_ast;
 
diff --git a/src/tint/reader/spirv/parser_impl_module_var_test.cc b/src/tint/reader/spirv/parser_impl_module_var_test.cc
index 1a242b5..714822d 100644
--- a/src/tint/reader/spirv/parser_impl_module_var_test.cc
+++ b/src/tint/reader/spirv/parser_impl_module_var_test.cc
@@ -472,7 +472,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
@@ -532,7 +532,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
@@ -591,7 +591,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
@@ -650,7 +650,7 @@
 
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -708,7 +708,7 @@
 
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -766,7 +766,7 @@
 
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -802,7 +802,7 @@
 
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -1402,9 +1402,9 @@
   EXPECT_THAT(module_str, HasSubstr(R"(type Arr = @stride(4) array<u32, 2u>;
 
 struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : Arr;
+  field0 : u32,
+  field1 : f32,
+  field2 : Arr,
 }
 
 @group(0) @binding(0) var<storage, read_write> x_1 : S;
@@ -1434,7 +1434,7 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(module_str, HasSubstr(R"(struct S {
-  field0 : mat3x2<f32>;
+  field0 : mat3x2<f32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> myvar : S;
@@ -1463,7 +1463,7 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(module_str, HasSubstr(R"(struct S {
-  field0 : mat3x2<f32>;
+  field0 : mat3x2<f32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> myvar : S;
@@ -1493,7 +1493,7 @@
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(module_str, HasSubstr(R"(struct S {
   @stride(64) @internal(disable_validation__ignore_stride)
-  field0 : mat3x2<f32>;
+  field0 : mat3x2<f32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> myvar : S;
@@ -1545,8 +1545,8 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(module_str, HasSubstr(R"(struct S {
-  field0 : f32;
-  field1 : f32;
+  field0 : f32,
+  field1 : f32,
 }
 
 @group(0) @binding(0) var<storage, read> x_1 : S;
@@ -1574,8 +1574,8 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(module_str, HasSubstr(R"(struct S {
-  field0 : f32;
-  field1 : f32;
+  field0 : f32,
+  field1 : f32,
 }
 
 @group(0) @binding(0) var<storage, read_write> x_1 : S;
@@ -1606,8 +1606,8 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(module_str, HasSubstr(R"(struct S {
-  field0 : f32;
-  field1 : f32;
+  field0 : f32,
+  field1 : f32,
 }
 
 @group(0) @binding(0) var<storage, read_write> x_1 : S;
@@ -2360,7 +2360,7 @@
 
 struct main_out {
   @builtin(sample_mask)
-  x_1_1 : u32;
+  x_1_1 : u32,
 }
 
 @stage(fragment)
@@ -2397,7 +2397,7 @@
 
 struct main_out {
   @builtin(sample_mask)
-  x_1_1 : u32;
+  x_1_1 : u32,
 }
 
 @stage(fragment)
@@ -2434,7 +2434,7 @@
 
 struct main_out {
   @builtin(sample_mask)
-  x_1_1 : u32;
+  x_1_1 : u32,
 }
 
 @stage(fragment)
@@ -2470,7 +2470,7 @@
 
 struct main_out {
   @builtin(sample_mask)
-  x_1_1 : u32;
+  x_1_1 : u32,
 }
 
 @stage(fragment)
@@ -2507,7 +2507,7 @@
 
 struct main_out {
   @builtin(sample_mask)
-  x_1_1 : u32;
+  x_1_1 : u32,
 }
 
 @stage(fragment)
@@ -2544,7 +2544,7 @@
 
 struct main_out {
   @builtin(sample_mask)
-  x_1_1 : u32;
+  x_1_1 : u32,
 }
 
 @stage(fragment)
@@ -2627,7 +2627,7 @@
 
 struct main_out {
   @builtin(sample_mask)
-  x_1_1 : u32;
+  x_1_1 : u32,
 }
 
 @stage(fragment)
@@ -2685,7 +2685,7 @@
 
 struct main_out {
   @builtin(position)
-  x_4_1 : vec4<f32>;
+  x_4_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -2723,7 +2723,7 @@
 
 struct main_out {
   @builtin(position)
-  x_4_1 : vec4<f32>;
+  x_4_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -2760,7 +2760,7 @@
 
 struct main_out {
   @builtin(position)
-  x_4_1 : vec4<f32>;
+  x_4_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -2796,7 +2796,7 @@
 
 struct main_out {
   @builtin(position)
-  x_4_1 : vec4<f32>;
+  x_4_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -2834,7 +2834,7 @@
 
 struct main_out {
   @builtin(position)
-  x_4_1 : vec4<f32>;
+  x_4_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -2871,7 +2871,7 @@
 
 struct main_out {
   @builtin(position)
-  x_4_1 : vec4<f32>;
+  x_4_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -2956,7 +2956,7 @@
 
 struct main_out {
   @builtin(position)
-  position_1 : vec4<f32>;
+  position_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -2994,7 +2994,7 @@
 
 struct main_out {
   @builtin(position)
-  position_1 : vec4<f32>;
+  position_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -3031,7 +3031,7 @@
 
 struct main_out {
   @builtin(position)
-  position_1 : vec4<f32>;
+  position_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -3091,7 +3091,7 @@
 
 struct main_out {
   @builtin(position)
-  position_1 : vec4<f32>;
+  position_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -3129,7 +3129,7 @@
 
 struct main_out {
   @builtin(position)
-  position_1 : vec4<f32>;
+  position_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -3166,7 +3166,7 @@
 
 struct main_out {
   @builtin(position)
-  position_1 : vec4<f32>;
+  position_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -3728,9 +3728,9 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  x_2_1 : u32;
+  x_2_1 : u32,
   @location(6) @interpolate(flat)
-  x_4_1 : u32;
+  x_4_1 : u32,
 }
 
 @stage(fragment)
@@ -3782,7 +3782,7 @@
 
 struct main_out {
   @builtin(position)
-  x_4_1 : vec4<f32>;
+  x_4_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -3832,7 +3832,7 @@
 
 struct main_out {
   @builtin(position)
-  x_4_1 : vec4<f32>;
+  x_4_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -3958,7 +3958,7 @@
 
 struct main_out {
   @builtin(sample_mask)
-  x_1_1 : u32;
+  x_1_1 : u32,
 }
 
 @stage(fragment)
@@ -4004,7 +4004,7 @@
 
 struct main_out {
   @builtin(sample_mask)
-  x_1_1 : u32;
+  x_1_1 : u32,
 }
 
 @stage(fragment)
@@ -4048,7 +4048,7 @@
 
 struct main_out {
   @builtin(frag_depth)
-  x_1_1 : f32;
+  x_1_1 : f32,
 }
 
 @stage(fragment)
@@ -4082,7 +4082,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4152,7 +4152,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4209,7 +4209,7 @@
 
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4267,7 +4267,7 @@
 
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4320,8 +4320,8 @@
 
   const auto got = test::ToString(p->program());
   const std::string expected = R"(struct Communicators {
-  alice : f32;
-  bob : vec4<f32>;
+  alice : f32,
+  bob : vec4<f32>,
 }
 
 var<private> x_1 : Communicators;
@@ -4334,7 +4334,7 @@
 
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4393,7 +4393,7 @@
 
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4454,13 +4454,13 @@
 
 struct main_out {
   @location(4)
-  x_1_1 : f32;
+  x_1_1 : f32,
   @location(5)
-  x_1_2 : f32;
+  x_1_2 : f32,
   @location(6)
-  x_1_3 : f32;
+  x_1_3 : f32,
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4515,11 +4515,11 @@
 
 struct main_out {
   @location(9)
-  x_1_1 : vec4<f32>;
+  x_1_1 : vec4<f32>,
   @location(10)
-  x_1_2 : vec4<f32>;
+  x_1_2 : vec4<f32>,
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4570,8 +4570,8 @@
 
   const auto got = test::ToString(p->program());
   const std::string expected = R"(struct Communicators {
-  alice : f32;
-  bob : vec4<f32>;
+  alice : f32,
+  bob : vec4<f32>,
 }
 
 var<private> x_1 : Communicators;
@@ -4584,11 +4584,11 @@
 
 struct main_out {
   @location(9)
-  x_1_1 : f32;
+  x_1_1 : f32,
   @location(10)
-  x_1_2 : vec4<f32>;
+  x_1_2 : vec4<f32>,
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4643,8 +4643,8 @@
 
   const auto got = test::ToString(p->program());
   const std::string expected = R"(struct Communicators {
-  alice : f32;
-  bob : vec4<f32>;
+  alice : f32,
+  bob : vec4<f32>,
 }
 
 var<private> x_1 : Communicators;
@@ -4659,11 +4659,11 @@
 
 struct main_out {
   @builtin(position)
-  x_2_1 : vec4<f32>;
+  x_2_1 : vec4<f32>,
   @location(9)
-  x_3_1 : f32;
+  x_3_1 : f32,
   @location(11)
-  x_3_2 : vec4<f32>;
+  x_3_2 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4743,7 +4743,7 @@
 
 struct main_out {
   @builtin(position)
-  x_10_1 : vec4<f32>;
+  x_10_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4827,19 +4827,19 @@
 
 struct main_out {
   @location(1) @interpolate(flat)
-  x_1_1 : u32;
+  x_1_1 : u32,
   @location(2) @interpolate(flat)
-  x_2_1 : vec2<u32>;
+  x_2_1 : vec2<u32>,
   @location(3) @interpolate(flat)
-  x_3_1 : i32;
+  x_3_1 : i32,
   @location(4) @interpolate(flat)
-  x_4_1 : vec2<i32>;
+  x_4_1 : vec2<i32>,
   @location(5) @interpolate(flat)
-  x_5_1 : f32;
+  x_5_1 : f32,
   @location(6) @interpolate(flat)
-  x_6_1 : vec2<f32>;
+  x_6_1 : vec2<f32>,
   @builtin(position)
-  x_10_1 : vec4<f32>;
+  x_10_1 : vec4<f32>,
 }
 
 @stage(vertex)
@@ -4881,8 +4881,8 @@
   const auto got = test::ToString(p->program());
   const std::string expected =
       R"(struct S {
-  field0 : f32;
-  field1 : f32;
+  field0 : f32,
+  field1 : f32,
 }
 
 var<private> x_1 : array<f32, 2u>;
@@ -5022,12 +5022,12 @@
   const auto got = test::ToString(p->program());
   const std::string expected =
       R"(struct S {
-  field0 : f32;
-  field1 : f32;
-  field2 : f32;
-  field3 : f32;
-  field4 : f32;
-  field5 : f32;
+  field0 : f32,
+  field1 : f32,
+  field2 : f32,
+  field3 : f32,
+  field4 : f32,
+  field5 : f32,
 }
 
 var<private> x_1 : S;
@@ -5115,17 +5115,17 @@
 
 struct main_out {
   @location(1)
-  x_1_1 : f32;
+  x_1_1 : f32,
   @location(2) @interpolate(perspective, centroid)
-  x_2_1 : f32;
+  x_2_1 : f32,
   @location(3) @interpolate(perspective, sample)
-  x_3_1 : f32;
+  x_3_1 : f32,
   @location(4) @interpolate(linear)
-  x_4_1 : f32;
+  x_4_1 : f32,
   @location(5) @interpolate(linear, centroid)
-  x_5_1 : f32;
+  x_5_1 : f32,
   @location(6) @interpolate(linear, sample)
-  x_6_1 : f32;
+  x_6_1 : f32,
 }
 
 @stage(fragment)
@@ -5178,12 +5178,12 @@
   const auto got = test::ToString(p->program());
   const std::string expected =
       R"(struct S {
-  field0 : f32;
-  field1 : f32;
-  field2 : f32;
-  field3 : f32;
-  field4 : f32;
-  field5 : f32;
+  field0 : f32,
+  field1 : f32,
+  field2 : f32,
+  field3 : f32,
+  field4 : f32,
+  field5 : f32,
 }
 
 var<private> x_1 : S;
@@ -5194,17 +5194,17 @@
 
 struct main_out {
   @location(1)
-  x_1_1 : f32;
+  x_1_1 : f32,
   @location(2) @interpolate(perspective, centroid)
-  x_1_2 : f32;
+  x_1_2 : f32,
   @location(3) @interpolate(perspective, sample)
-  x_1_3 : f32;
+  x_1_3 : f32,
   @location(4) @interpolate(linear)
-  x_1_4 : f32;
+  x_1_4 : f32,
   @location(5) @interpolate(linear, centroid)
-  x_1_5 : f32;
+  x_1_5 : f32,
   @location(6) @interpolate(linear, sample)
-  x_1_6 : f32;
+  x_1_6 : f32,
 }
 
 @stage(fragment)
@@ -5279,19 +5279,19 @@
 
 struct main_out {
   @location(1) @interpolate(flat)
-  x_1_1 : u32;
+  x_1_1 : u32,
   @location(2) @interpolate(flat)
-  x_2_1 : vec2<u32>;
+  x_2_1 : vec2<u32>,
   @location(3) @interpolate(flat)
-  x_3_1 : i32;
+  x_3_1 : i32,
   @location(4) @interpolate(flat)
-  x_4_1 : vec2<i32>;
+  x_4_1 : vec2<i32>,
   @location(5)
-  x_5_1 : f32;
+  x_5_1 : f32,
   @location(6)
-  x_6_1 : vec2<f32>;
+  x_6_1 : vec2<f32>,
   @builtin(position)
-  x_10_1 : vec4<f32>;
+  x_10_1 : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/src/tint/reader/spirv/parser_impl_named_types_test.cc b/src/tint/reader/spirv/parser_impl_named_types_test.cc
index 2dfd70f..fcc04c5 100644
--- a/src/tint/reader/spirv/parser_impl_named_types_test.cc
+++ b/src/tint/reader/spirv/parser_impl_named_types_test.cc
@@ -54,13 +54,13 @@
   )"));
   EXPECT_TRUE(p->BuildAndParseInternalModule()) << p->error();
   EXPECT_THAT(test::ToString(p->program()), HasSubstr(R"(struct S {
-  field0 : u32;
-  field1 : u32;
+  field0 : u32,
+  field1 : u32,
 }
 
 struct S_1 {
-  field0 : u32;
-  field1 : u32;
+  field0 : u32,
+  field1 : u32,
 })"));
 
   p->DeliberatelyInvalidSpirv();
diff --git a/src/tint/reader/wgsl/parser_impl.cc b/src/tint/reader/wgsl/parser_impl.cc
index d2150b1..af02aaa 100644
--- a/src/tint/reader/wgsl/parser_impl.cc
+++ b/src/tint/reader/wgsl/parser_impl.cc
@@ -1166,56 +1166,61 @@
 }
 
 // struct_body_decl
-//   : BRACKET_LEFT struct_member* BRACKET_RIGHT
+//   : BRACE_LEFT (struct_member COMMA)* struct_member COMMA? BRACE_RIGHT
 Expect<ast::StructMemberList> ParserImpl::expect_struct_body_decl() {
   return expect_brace_block(
       "struct declaration", [&]() -> Expect<ast::StructMemberList> {
-        bool errored = false;
-
         ast::StructMemberList members;
+        bool errored = false;
+        while (continue_parsing()) {
+          // Check for the end of the list.
+          auto t = peek();
+          if (!t.IsIdentifier() && !t.Is(Token::Type::kAttr)) {
+            break;
+          }
 
-        while (continue_parsing() && !peek_is(Token::Type::kBraceRight) &&
-               !peek_is(Token::Type::kEOF)) {
-          auto member = sync(Token::Type::kSemicolon,
-                             [&]() -> Expect<ast::StructMember*> {
-                               auto attrs = attribute_list();
-                               if (attrs.errored) {
-                                 errored = true;
-                               }
-                               if (!synchronized_) {
-                                 return Failure::kErrored;
-                               }
-                               return expect_struct_member(attrs.value);
-                             });
-
+          auto member = expect_struct_member();
           if (member.errored) {
             errored = true;
+            if (!sync_to(Token::Type::kComma, /* consume: */ false)) {
+              return Failure::kErrored;
+            }
           } else {
             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;
         }
-
-        if (errored)
+        if (errored) {
           return Failure::kErrored;
-
+        }
         return members;
       });
 }
 
 // struct_member
-//   : struct_member_attribute_decl+ variable_ident_decl SEMICOLON
-Expect<ast::StructMember*> ParserImpl::expect_struct_member(
-    ast::AttributeList& attrs) {
+//   : attribute* variable_ident_decl
+Expect<ast::StructMember*> ParserImpl::expect_struct_member() {
+  auto attrs = attribute_list();
+  if (attrs.errored) {
+    return Failure::kErrored;
+  }
+
   auto decl = expect_variable_ident_decl("struct member");
   if (decl.errored)
     return Failure::kErrored;
 
-  if (!expect("struct member", Token::Type::kSemicolon))
-    return Failure::kErrored;
-
   return create<ast::StructMember>(decl->source,
                                    builder_.Symbols().Register(decl->name),
-                                   decl->type, std::move(attrs));
+                                   decl->type, std::move(attrs.value));
 }
 
 // function_decl
diff --git a/src/tint/reader/wgsl/parser_impl.h b/src/tint/reader/wgsl/parser_impl.h
index 7cce8fd..d358b11 100644
--- a/src/tint/reader/wgsl/parser_impl.h
+++ b/src/tint/reader/wgsl/parser_impl.h
@@ -429,12 +429,9 @@
   /// Parses a `struct_body_decl` grammar element, erroring on parse failure.
   /// @returns the struct members
   Expect<ast::StructMemberList> expect_struct_body_decl();
-  /// Parses a `struct_member` grammar element with the initial
-  /// `struct_member_attribute_decl+` provided as `attrs`, erroring on parse
-  /// failure.
-  /// @param attrs the list of attributes for the struct member.
+  /// Parses a `struct_member` grammar element, erroring on parse failure.
   /// @returns the struct member or nullptr
-  Expect<ast::StructMember*> expect_struct_member(ast::AttributeList& attrs);
+  Expect<ast::StructMember*> expect_struct_member();
   /// Parses a `function_decl` grammar element with the initial
   /// `function_attribute_decl*` provided as `attrs`.
   /// @param attrs the list of attributes for the function declaration.
diff --git a/src/tint/reader/wgsl/parser_impl_error_msg_test.cc b/src/tint/reader/wgsl/parser_impl_error_msg_test.cc
index 021b266..8610ae5 100644
--- a/src/tint/reader/wgsl/parser_impl_error_msg_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_error_msg_test.cc
@@ -672,59 +672,51 @@
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructDeclMissingRBrace) {
-  EXPECT("struct S { i : i32;",
+  EXPECT("struct S { i : i32,",
          R"(test.wgsl:1:20 error: expected '}' for struct declaration
-struct S { i : i32;
+struct S { i : i32,
                    ^
 )");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberInvalidIdentifier) {
-  EXPECT("struct S { 1 : i32; };",
-         R"(test.wgsl:1:12 error: expected identifier for struct member
-struct S { 1 : i32; };
+  EXPECT("struct S { 1 : i32, };",
+         R"(test.wgsl:1:12 error: expected '}' for struct declaration
+struct S { 1 : i32, };
            ^
 )");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclStructMemberMissingSemicolon) {
-  EXPECT("struct S { i : i32 };",
-         R"(test.wgsl:1:20 error: expected ';' for struct member
-struct S { i : i32 };
-                   ^
-)");
-}
-
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberAlignInvaldValue) {
   EXPECT(
-      "struct S { @align(x) i : i32; };",
+      "struct S { @align(x) i : i32, };",
       R"(test.wgsl:1:19 error: expected signed integer literal for align attribute
-struct S { @align(x) i : i32; };
+struct S { @align(x) i : i32, };
                   ^
 )");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberAlignNegativeValue) {
-  EXPECT("struct S { @align(-2) i : i32; };",
+  EXPECT("struct S { @align(-2) i : i32, };",
          R"(test.wgsl:1:19 error: align attribute must be positive
-struct S { @align(-2) i : i32; };
+struct S { @align(-2) i : i32, };
                   ^^
 )");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberSizeInvaldValue) {
   EXPECT(
-      "struct S { @size(x) i : i32; };",
+      "struct S { @size(x) i : i32, };",
       R"(test.wgsl:1:18 error: expected signed integer literal for size attribute
-struct S { @size(x) i : i32; };
+struct S { @size(x) i : i32, };
                  ^
 )");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberSizeNegativeValue) {
-  EXPECT("struct S { @size(-2) i : i32; };",
+  EXPECT("struct S { @size(-2) i : i32, };",
          R"(test.wgsl:1:18 error: size attribute must be positive
-struct S { @size(-2) i : i32; };
+struct S { @size(-2) i : i32, };
                  ^^
 )");
 }
diff --git a/src/tint/reader/wgsl/parser_impl_error_resync_test.cc b/src/tint/reader/wgsl/parser_impl_error_resync_test.cc
index 14ff303..bfbc97d 100644
--- a/src/tint/reader/wgsl/parser_impl_error_resync_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_error_resync_test.cc
@@ -110,24 +110,24 @@
 TEST_F(ParserImplErrorResyncTest, StructMembers) {
   EXPECT(R"(
 struct S {
-    blah blah blah;
-    a : i32;
-    blah blah blah;
-    b : i32;
-    @- x : i32;
-    c : i32;
+    blah blah blah,
+    a : i32,
+    blah blah blah,
+    b : i32,
+    @- x : i32,
+    c : i32,
 }
 )",
          R"(test.wgsl:3:10 error: expected ':' for struct member
-    blah blah blah;
+    blah blah blah,
          ^^^^
 
 test.wgsl:5:10 error: expected ':' for struct member
-    blah blah blah;
+    blah blah blah,
          ^^^^
 
 test.wgsl:7:6 error: expected attribute
-    @- x : i32;
+    @- x : i32,
      ^
 )");
 }
diff --git a/src/tint/reader/wgsl/parser_impl_global_decl_test.cc b/src/tint/reader/wgsl/parser_impl_global_decl_test.cc
index 29d29a6..1f8c12d 100644
--- a/src/tint/reader/wgsl/parser_impl_global_decl_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_global_decl_test.cc
@@ -92,7 +92,7 @@
 
 TEST_F(ParserImplTest, GlobalDecl_TypeAlias_StructIdent) {
   auto p = parser(R"(struct A {
-  a : f32;
+  a : f32,
 }
 type B = A;)");
   p->expect_global_decl();
@@ -150,7 +150,7 @@
 }
 
 TEST_F(ParserImplTest, GlobalDecl_ParsesStruct) {
-  auto p = parser("struct A { b: i32; c: f32;}");
+  auto p = parser("struct A { b: i32, c: f32}");
   p->expect_global_decl();
   ASSERT_FALSE(p->has_error()) << p->error();
 
diff --git a/src/tint/reader/wgsl/parser_impl_primary_expression_test.cc b/src/tint/reader/wgsl/parser_impl_primary_expression_test.cc
index 0b5a4bf..a23d9ae 100644
--- a/src/tint/reader/wgsl/parser_impl_primary_expression_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_primary_expression_test.cc
@@ -115,7 +115,7 @@
 
 TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_StructConstructor_Empty) {
   auto p = parser(R"(
-  struct S { a : i32; b : f32; }
+  struct S { a : i32, b : f32, }
   S()
   )");
 
@@ -139,7 +139,7 @@
 
 TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_StructConstructor_NotEmpty) {
   auto p = parser(R"(
-  struct S { a : i32; b : f32; }
+  struct S { a : i32, b : f32, }
   S(1u, 2.0)
   )");
 
diff --git a/src/tint/reader/wgsl/parser_impl_reserved_keyword_test.cc b/src/tint/reader/wgsl/parser_impl_reserved_keyword_test.cc
index 1966ec7..c6ee3dd 100644
--- a/src/tint/reader/wgsl/parser_impl_reserved_keyword_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_reserved_keyword_test.cc
@@ -71,7 +71,7 @@
 }
 TEST_P(ParserImplReservedKeywordTest, StructMember) {
   auto name = GetParam();
-  auto p = parser("struct S { " + name + " : i32; };");
+  auto p = parser("struct S { " + name + " : i32, };");
   EXPECT_FALSE(p->Parse());
   EXPECT_TRUE(p->has_error());
   EXPECT_EQ(p->error(), "1:12: '" + name + "' is a reserved keyword");
diff --git a/src/tint/reader/wgsl/parser_impl_struct_body_decl_test.cc b/src/tint/reader/wgsl/parser_impl_struct_body_decl_test.cc
index d03b2d3..d7ce6ee 100644
--- a/src/tint/reader/wgsl/parser_impl_struct_body_decl_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_struct_body_decl_test.cc
@@ -20,7 +20,23 @@
 namespace {
 
 TEST_F(ParserImplTest, StructBodyDecl_Parses) {
-  auto p = parser("{a : i32;}");
+  auto p = parser("{a : i32}");
+
+  auto& builder = p->builder();
+
+  auto m = p->expect_struct_body_decl();
+  ASSERT_FALSE(p->has_error());
+  ASSERT_FALSE(m.errored);
+  ASSERT_EQ(m.value.size(), 1u);
+
+  const auto* mem = m.value[0];
+  EXPECT_EQ(mem->symbol, builder.Symbols().Get("a"));
+  EXPECT_TRUE(mem->type->Is<ast::I32>());
+  EXPECT_EQ(mem->attributes.size(), 0u);
+}
+
+TEST_F(ParserImplTest, StructBodyDecl_Parses_TrailingComma) {
+  auto p = parser("{a : i32,}");
 
   auto& builder = p->builder();
 
@@ -46,7 +62,7 @@
 TEST_F(ParserImplTest, StructBodyDecl_InvalidAlign) {
   auto p = parser(R"(
 {
-  @align(nan) a : i32;
+  @align(nan) a : i32,
 })");
   auto m = p->expect_struct_body_decl();
   ASSERT_TRUE(p->has_error());
@@ -58,7 +74,7 @@
 TEST_F(ParserImplTest, StructBodyDecl_InvalidSize) {
   auto p = parser(R"(
 {
-  @size(nan) a : i32;
+  @size(nan) a : i32,
 })");
   auto m = p->expect_struct_body_decl();
   ASSERT_TRUE(p->has_error());
@@ -68,7 +84,7 @@
 }
 
 TEST_F(ParserImplTest, StructBodyDecl_MissingClosingBracket) {
-  auto p = parser("{a : i32;");
+  auto p = parser("{a : i32,");
   auto m = p->expect_struct_body_decl();
   ASSERT_TRUE(p->has_error());
   ASSERT_TRUE(m.errored);
@@ -78,13 +94,13 @@
 TEST_F(ParserImplTest, StructBodyDecl_InvalidToken) {
   auto p = parser(R"(
 {
-  a : i32;
+  a : i32,
   1.23
 } )");
   auto m = p->expect_struct_body_decl();
   ASSERT_TRUE(p->has_error());
   ASSERT_TRUE(m.errored);
-  EXPECT_EQ(p->error(), "4:3: expected identifier for struct member");
+  EXPECT_EQ(p->error(), "4:3: expected '}' for struct declaration");
 }
 
 }  // namespace
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 3e944ff..0c8ee1d 100644
--- a/src/tint/reader/wgsl/parser_impl_struct_decl_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_struct_decl_test.cc
@@ -23,8 +23,8 @@
 TEST_F(ParserImplTest, StructDecl_Parses) {
   auto p = parser(R"(
 struct S {
-  a : i32;
-  b : f32;
+  a : i32,
+  b : f32,
 })");
   auto s = p->struct_decl();
   EXPECT_FALSE(p->has_error());
@@ -51,8 +51,8 @@
 
   std::string src = R"(
 struct $struct {
-  $member_a : i32;
-  $member_b : f32;
+  $member_a : i32,
+  $member_b : f32,
 })";
   src = utils::ReplaceAll(src, "$struct", struct_ident);
   src = utils::ReplaceAll(src, "$member_a", member_a_ident);
@@ -108,6 +108,24 @@
   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 wgsl
 }  // namespace reader
diff --git a/src/tint/reader/wgsl/parser_impl_struct_member_test.cc b/src/tint/reader/wgsl/parser_impl_struct_member_test.cc
index 5aafabc..7949b72 100644
--- a/src/tint/reader/wgsl/parser_impl_struct_member_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_struct_member_test.cc
@@ -20,16 +20,11 @@
 namespace {
 
 TEST_F(ParserImplTest, StructMember_Parses) {
-  auto p = parser("a : i32;");
+  auto p = parser("a : i32,");
 
   auto& builder = p->builder();
 
-  auto attrs = p->attribute_list();
-  EXPECT_FALSE(attrs.errored);
-  EXPECT_FALSE(attrs.matched);
-  EXPECT_EQ(attrs.value.size(), 0u);
-
-  auto m = p->expect_struct_member(attrs.value);
+  auto m = p->expect_struct_member();
   ASSERT_FALSE(p->has_error());
   ASSERT_FALSE(m.errored);
   ASSERT_NE(m.value, nullptr);
@@ -43,16 +38,11 @@
 }
 
 TEST_F(ParserImplTest, StructMember_ParsesWithAlignAttribute) {
-  auto p = parser("@align(2) a : i32;");
+  auto p = parser("@align(2) a : i32,");
 
   auto& builder = p->builder();
 
-  auto attrs = p->attribute_list();
-  EXPECT_FALSE(attrs.errored);
-  EXPECT_TRUE(attrs.matched);
-  EXPECT_EQ(attrs.value.size(), 1u);
-
-  auto m = p->expect_struct_member(attrs.value);
+  auto m = p->expect_struct_member();
   ASSERT_FALSE(p->has_error());
   ASSERT_FALSE(m.errored);
   ASSERT_NE(m.value, nullptr);
@@ -68,41 +58,11 @@
 }
 
 TEST_F(ParserImplTest, StructMember_ParsesWithSizeAttribute) {
-  auto p = parser("@size(2) a : i32;");
+  auto p = parser("@size(2) a : i32,");
 
   auto& builder = p->builder();
 
-  auto attrs = p->attribute_list();
-  EXPECT_FALSE(attrs.errored);
-  EXPECT_TRUE(attrs.matched);
-  EXPECT_EQ(attrs.value.size(), 1u);
-
-  auto m = p->expect_struct_member(attrs.value);
-  ASSERT_FALSE(p->has_error());
-  ASSERT_FALSE(m.errored);
-  ASSERT_NE(m.value, nullptr);
-
-  EXPECT_EQ(m->symbol, builder.Symbols().Get("a"));
-  EXPECT_TRUE(m->type->Is<ast::I32>());
-  EXPECT_EQ(m->attributes.size(), 1u);
-  EXPECT_TRUE(m->attributes[0]->Is<ast::StructMemberSizeAttribute>());
-  EXPECT_EQ(m->attributes[0]->As<ast::StructMemberSizeAttribute>()->size, 2u);
-
-  EXPECT_EQ(m->source.range, (Source::Range{{1u, 10u}, {1u, 11u}}));
-  EXPECT_EQ(m->type->source.range, (Source::Range{{1u, 14u}, {1u, 17u}}));
-}
-
-TEST_F(ParserImplTest, StructMember_ParsesWithAttribute) {
-  auto p = parser("@size(2) a : i32;");
-
-  auto& builder = p->builder();
-
-  auto attrs = p->attribute_list();
-  EXPECT_FALSE(attrs.errored);
-  EXPECT_TRUE(attrs.matched);
-  EXPECT_EQ(attrs.value.size(), 1u);
-
-  auto m = p->expect_struct_member(attrs.value);
+  auto m = p->expect_struct_member();
   ASSERT_FALSE(p->has_error());
   ASSERT_FALSE(m.errored);
   ASSERT_NE(m.value, nullptr);
@@ -119,16 +79,11 @@
 
 TEST_F(ParserImplTest, StructMember_ParsesWithMultipleattributes) {
   auto p = parser(R"(@size(2)
-@align(4) a : i32;)");
+@align(4) a : i32,)");
 
   auto& builder = p->builder();
 
-  auto attrs = p->attribute_list();
-  EXPECT_FALSE(attrs.errored);
-  EXPECT_TRUE(attrs.matched);
-  EXPECT_EQ(attrs.value.size(), 2u);
-
-  auto m = p->expect_struct_member(attrs.value);
+  auto m = p->expect_struct_member();
   ASSERT_FALSE(p->has_error());
   ASSERT_FALSE(m.errored);
   ASSERT_NE(m.value, nullptr);
@@ -146,33 +101,17 @@
 }
 
 TEST_F(ParserImplTest, StructMember_InvalidAttribute) {
-  auto p = parser("@size(nan) a : i32;");
-  auto attrs = p->attribute_list();
-  EXPECT_TRUE(attrs.errored);
-  EXPECT_FALSE(attrs.matched);
+  auto p = parser("@size(nan) a : i32,");
 
-  auto m = p->expect_struct_member(attrs.value);
-  ASSERT_FALSE(m.errored);
-  ASSERT_NE(m.value, nullptr);
+  auto m = p->expect_struct_member();
+  ASSERT_TRUE(m.errored);
+  ASSERT_EQ(m.value, nullptr);
 
   ASSERT_TRUE(p->has_error());
   EXPECT_EQ(p->error(),
             "1:7: expected signed integer literal for size attribute");
 }
 
-TEST_F(ParserImplTest, StructMember_MissingSemicolon) {
-  auto p = parser("a : i32");
-  auto attrs = p->attribute_list();
-  EXPECT_FALSE(attrs.errored);
-  EXPECT_FALSE(attrs.matched);
-
-  auto m = p->expect_struct_member(attrs.value);
-  ASSERT_TRUE(p->has_error());
-  ASSERT_TRUE(m.errored);
-  ASSERT_EQ(m.value, nullptr);
-  EXPECT_EQ(p->error(), "1:8: expected ';' for struct member");
-}
-
 }  // namespace
 }  // namespace wgsl
 }  // namespace reader
diff --git a/src/tint/reader/wgsl/parser_impl_test.cc b/src/tint/reader/wgsl/parser_impl_test.cc
index c0348da..6a5c0b0 100644
--- a/src/tint/reader/wgsl/parser_impl_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_test.cc
@@ -41,7 +41,7 @@
   auto p = parser(R"(
 ;
 struct S {
-  a : f32;
+  a : f32,
 };;
 ;
 fn foo() -> S {
diff --git a/src/tint/transform/add_spirv_block_attribute_test.cc b/src/tint/transform/add_spirv_block_attribute_test.cc
index 5968cf4..046b9c1 100644
--- a/src/tint/transform/add_spirv_block_attribute_test.cc
+++ b/src/tint/transform/add_spirv_block_attribute_test.cc
@@ -37,7 +37,7 @@
 TEST_F(AddSpirvBlockAttributeTest, Noop_UsedForPrivateVar) {
   auto* src = R"(
 struct S {
-  f : f32;
+  f : f32,
 }
 
 var<private> p : S;
@@ -58,7 +58,7 @@
   auto* src = R"(
 struct S {
   @location(0)
-  f : f32;
+  f : f32,
 }
 
 @stage(fragment)
@@ -86,7 +86,7 @@
   auto* expect = R"(
 @internal(spirv_block)
 struct u_block {
-  inner : f32;
+  inner : f32,
 }
 
 @group(0) @binding(0) var<uniform> u : u_block;
@@ -115,7 +115,7 @@
   auto* expect = R"(
 @internal(spirv_block)
 struct u_block {
-  inner : array<vec4<f32>, 4u>;
+  inner : array<vec4<f32>, 4u>,
 }
 
 @group(0) @binding(0) var<uniform> u : u_block;
@@ -148,7 +148,7 @@
 
 @internal(spirv_block)
 struct u_block {
-  inner : array<vec4<f32>, 4u>;
+  inner : array<vec4<f32>, 4u>,
 }
 
 @group(0) @binding(0) var<uniform> u : u_block;
@@ -167,7 +167,7 @@
 TEST_F(AddSpirvBlockAttributeTest, BasicStruct) {
   auto* src = R"(
 struct S {
-  f : f32;
+  f : f32,
 };
 
 @group(0) @binding(0)
@@ -181,7 +181,7 @@
   auto* expect = R"(
 @internal(spirv_block)
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @group(0) @binding(0) var<uniform> u : S;
@@ -200,11 +200,11 @@
 TEST_F(AddSpirvBlockAttributeTest, Nested_OuterBuffer_InnerNotBuffer) {
   auto* src = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 };
 
 struct Outer {
-  i : Inner;
+  i : Inner,
 };
 
 @group(0) @binding(0)
@@ -217,12 +217,12 @@
 )";
   auto* expect = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 }
 
 @internal(spirv_block)
 struct Outer {
-  i : Inner;
+  i : Inner,
 }
 
 @group(0) @binding(0) var<uniform> u : Outer;
@@ -241,11 +241,11 @@
 TEST_F(AddSpirvBlockAttributeTest, Nested_OuterBuffer_InnerBuffer) {
   auto* src = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 };
 
 struct Outer {
-  i : Inner;
+  i : Inner,
 };
 
 @group(0) @binding(0)
@@ -262,19 +262,19 @@
 )";
   auto* expect = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 }
 
 @internal(spirv_block)
 struct Outer {
-  i : Inner;
+  i : Inner,
 }
 
 @group(0) @binding(0) var<uniform> u0 : Outer;
 
 @internal(spirv_block)
 struct u1_block {
-  inner : Inner;
+  inner : Inner,
 }
 
 @group(0) @binding(1) var<uniform> u1 : u1_block;
@@ -294,11 +294,11 @@
 TEST_F(AddSpirvBlockAttributeTest, Nested_OuterNotBuffer_InnerBuffer) {
   auto* src = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 };
 
 struct Outer {
-  i : Inner;
+  i : Inner,
 };
 
 var<private> p : Outer;
@@ -314,18 +314,18 @@
 )";
   auto* expect = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 }
 
 struct Outer {
-  i : Inner;
+  i : Inner,
 }
 
 var<private> p : Outer;
 
 @internal(spirv_block)
 struct u_block {
-  inner : Inner;
+  inner : Inner,
 }
 
 @group(0) @binding(1) var<uniform> u : u_block;
@@ -345,11 +345,11 @@
 TEST_F(AddSpirvBlockAttributeTest, Nested_InnerUsedForMultipleBuffers) {
   auto* src = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 };
 
 struct S {
-  i : Inner;
+  i : Inner,
 };
 
 @group(0) @binding(0)
@@ -370,19 +370,19 @@
 )";
   auto* expect = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 }
 
 @internal(spirv_block)
 struct S {
-  i : Inner;
+  i : Inner,
 }
 
 @group(0) @binding(0) var<uniform> u0 : S;
 
 @internal(spirv_block)
 struct u1_block {
-  inner : Inner;
+  inner : Inner,
 }
 
 @group(0) @binding(1) var<uniform> u1 : u1_block;
@@ -405,7 +405,7 @@
 TEST_F(AddSpirvBlockAttributeTest, StructInArray) {
   auto* src = R"(
 struct S {
-  f : f32;
+  f : f32,
 };
 
 @group(0) @binding(0)
@@ -419,12 +419,12 @@
 )";
   auto* expect = R"(
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @internal(spirv_block)
 struct u_block {
-  inner : S;
+  inner : S,
 }
 
 @group(0) @binding(0) var<uniform> u : u_block;
@@ -444,7 +444,7 @@
 TEST_F(AddSpirvBlockAttributeTest, StructInArray_MultipleBuffers) {
   auto* src = R"(
 struct S {
-  f : f32;
+  f : f32,
 };
 
 @group(0) @binding(0)
@@ -462,12 +462,12 @@
 )";
   auto* expect = R"(
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @internal(spirv_block)
 struct u0_block {
-  inner : S;
+  inner : S,
 }
 
 @group(0) @binding(0) var<uniform> u0 : u0_block;
@@ -490,13 +490,13 @@
 TEST_F(AddSpirvBlockAttributeTest, Aliases_Nested_OuterBuffer_InnerBuffer) {
   auto* src = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 };
 
 type MyInner = Inner;
 
 struct Outer {
-  i : MyInner;
+  i : MyInner,
 };
 
 type MyOuter = Outer;
@@ -515,14 +515,14 @@
 )";
   auto* expect = R"(
 struct Inner {
-  f : f32;
+  f : f32,
 }
 
 type MyInner = Inner;
 
 @internal(spirv_block)
 struct Outer {
-  i : MyInner;
+  i : MyInner,
 }
 
 type MyOuter = Outer;
@@ -531,7 +531,7 @@
 
 @internal(spirv_block)
 struct u1_block {
-  inner : Inner;
+  inner : Inner,
 }
 
 @group(0) @binding(1) var<uniform> u1 : u1_block;
@@ -568,11 +568,11 @@
 type MyOuter = Outer;
 
 struct Outer {
-  i : MyInner;
+  i : MyInner,
 };
 
 struct Inner {
-  f : f32;
+  f : f32,
 };
 )";
   auto* expect = R"(
@@ -584,7 +584,7 @@
 
 @internal(spirv_block)
 struct u1_block {
-  inner : Inner;
+  inner : Inner,
 }
 
 @group(0) @binding(1) var<uniform> u1 : u1_block;
@@ -597,11 +597,11 @@
 
 @internal(spirv_block)
 struct Outer {
-  i : MyInner;
+  i : MyInner,
 }
 
 struct Inner {
-  f : f32;
+  f : f32,
 }
 )";
 
diff --git a/src/tint/transform/array_length_from_uniform_test.cc b/src/tint/transform/array_length_from_uniform_test.cc
index 8bd6659..7cdcb5c 100644
--- a/src/tint/transform/array_length_from_uniform_test.cc
+++ b/src/tint/transform/array_length_from_uniform_test.cc
@@ -35,8 +35,8 @@
 TEST_F(ArrayLengthFromUniformTest, ShouldRunNoArrayLength) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -52,8 +52,8 @@
 TEST_F(ArrayLengthFromUniformTest, ShouldRunWithArrayLength) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -70,8 +70,8 @@
 TEST_F(ArrayLengthFromUniformTest, Error_MissingTransformData) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -103,7 +103,7 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  buffer_size : array<vec4<u32>, 1u>;
+  buffer_size : array<vec4<u32>, 1u>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
@@ -132,8 +132,8 @@
 TEST_F(ArrayLengthFromUniformTest, BasicInStruct) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -146,14 +146,14 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  buffer_size : array<vec4<u32>, 1u>;
+  buffer_size : array<vec4<u32>, 1u>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -180,16 +180,16 @@
 TEST_F(ArrayLengthFromUniformTest, MultipleStorageBuffers) {
   auto* src = R"(
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 };
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 };
 struct SB4 {
-  x : i32;
-  arr4 : array<vec4<f32>>;
+  x : i32,
+  arr4 : array<vec4<f32>>,
 };
 
 @group(0) @binding(2) var<storage, read> sb1 : SB1;
@@ -211,24 +211,24 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  buffer_size : array<vec4<u32>, 2u>;
+  buffer_size : array<vec4<u32>, 2u>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 }
 
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 }
 
 struct SB4 {
-  x : i32;
-  arr4 : array<vec4<f32>>;
+  x : i32,
+  arr4 : array<vec4<f32>>,
 }
 
 @group(0) @binding(2) var<storage, read> sb1 : SB1;
@@ -272,16 +272,16 @@
 TEST_F(ArrayLengthFromUniformTest, MultipleUnusedStorageBuffers) {
   auto* src = R"(
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 };
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 };
 struct SB4 {
-  x : i32;
-  arr4 : array<vec4<f32>>;
+  x : i32,
+  arr4 : array<vec4<f32>>,
 };
 
 @group(0) @binding(2) var<storage, read> sb1 : SB1;
@@ -300,24 +300,24 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  buffer_size : array<vec4<u32>, 1u>;
+  buffer_size : array<vec4<u32>, 1u>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 }
 
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 }
 
 struct SB4 {
-  x : i32;
-  arr4 : array<vec4<f32>>;
+  x : i32,
+  arr4 : array<vec4<f32>>,
 }
 
 @group(0) @binding(2) var<storage, read> sb1 : SB1;
@@ -358,8 +358,8 @@
 TEST_F(ArrayLengthFromUniformTest, NoArrayLengthCalls) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -385,13 +385,13 @@
 TEST_F(ArrayLengthFromUniformTest, MissingBindingPointToIndexMapping) {
   auto* src = R"(
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 };
 
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 };
 
 @group(0) @binding(2) var<storage, read> sb1 : SB1;
@@ -408,19 +408,19 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  buffer_size : array<vec4<u32>, 1u>;
+  buffer_size : array<vec4<u32>, 1u>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 }
 
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 }
 
 @group(0) @binding(2) var<storage, read> sb1 : SB1;
@@ -458,14 +458,14 @@
 @group(0) @binding(0) var<storage, read> sb : SB;
 
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol {
-  buffer_size : array<vec4<u32>, 1u>;
+  buffer_size : array<vec4<u32>, 1u>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
@@ -478,8 +478,8 @@
 @group(0) @binding(0) var<storage, read> sb : SB;
 
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 }
 )";
 
diff --git a/src/tint/transform/binding_remapper_test.cc b/src/tint/transform/binding_remapper_test.cc
index 4e0e515..3fc0b19 100644
--- a/src/tint/transform/binding_remapper_test.cc
+++ b/src/tint/transform/binding_remapper_test.cc
@@ -68,7 +68,7 @@
 TEST_F(BindingRemapperTest, NoRemappings) {
   auto* src = R"(
 struct S {
-  a : f32;
+  a : f32,
 }
 
 @group(2) @binding(1) var<storage, read> a : S;
@@ -93,7 +93,7 @@
 TEST_F(BindingRemapperTest, RemapBindingPoints) {
   auto* src = R"(
 struct S {
-  a : f32;
+  a : f32,
 };
 
 @group(2) @binding(1) var<storage, read> a : S;
@@ -107,7 +107,7 @@
 
   auto* expect = R"(
 struct S {
-  a : f32;
+  a : f32,
 }
 
 @group(1) @binding(2) var<storage, read> a : S;
@@ -135,7 +135,7 @@
 TEST_F(BindingRemapperTest, RemapAccessControls) {
   auto* src = R"(
 struct S {
-  a : f32;
+  a : f32,
 };
 
 @group(2) @binding(1) var<storage, read> a : S;
@@ -151,7 +151,7 @@
 
   auto* expect = R"(
 struct S {
-  a : f32;
+  a : f32,
 }
 
 @group(2) @binding(1) var<storage, write> a : S;
@@ -181,7 +181,7 @@
 TEST_F(BindingRemapperTest, RemapAll) {
   auto* src = R"(
 struct S {
-  a : f32;
+  a : f32,
 };
 
 @group(2) @binding(1) var<storage, read> a : S;
@@ -195,7 +195,7 @@
 
   auto* expect = R"(
 struct S {
-  a : f32;
+  a : f32,
 }
 
 @group(4) @binding(5) var<storage, write> a : S;
@@ -225,7 +225,7 @@
 TEST_F(BindingRemapperTest, BindingCollisionsSameEntryPoint) {
   auto* src = R"(
 struct S {
-  i : i32;
+  i : i32,
 };
 
 @group(2) @binding(1) var<storage, read> a : S;
@@ -244,7 +244,7 @@
 
   auto* expect = R"(
 struct S {
-  i : i32;
+  i : i32,
 }
 
 @internal(disable_validation__binding_point_collision) @group(1) @binding(1) var<storage, read> a : S;
@@ -277,7 +277,7 @@
 TEST_F(BindingRemapperTest, BindingCollisionsDifferentEntryPoints) {
   auto* src = R"(
 struct S {
-  i : i32;
+  i : i32,
 };
 
 @group(2) @binding(1) var<storage, read> a : S;
@@ -301,7 +301,7 @@
 
   auto* expect = R"(
 struct S {
-  i : i32;
+  i : i32,
 }
 
 @group(1) @binding(1) var<storage, read> a : S;
@@ -339,7 +339,7 @@
 TEST_F(BindingRemapperTest, NoData) {
   auto* src = R"(
 struct S {
-  a : f32;
+  a : f32,
 }
 
 @group(2) @binding(1) var<storage, read> a : S;
diff --git a/src/tint/transform/calculate_array_length_test.cc b/src/tint/transform/calculate_array_length_test.cc
index c2ecbc9..17d28fd 100644
--- a/src/tint/transform/calculate_array_length_test.cc
+++ b/src/tint/transform/calculate_array_length_test.cc
@@ -33,8 +33,8 @@
 TEST_F(CalculateArrayLengthTest, ShouldRunNoArrayLength) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -50,8 +50,8 @@
 TEST_F(CalculateArrayLengthTest, ShouldRunWithArrayLength) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -98,8 +98,8 @@
 TEST_F(CalculateArrayLengthTest, BasicInStruct) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -115,8 +115,8 @@
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
 
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -138,7 +138,7 @@
 TEST_F(CalculateArrayLengthTest, ArrayOfStruct) {
   auto* src = R"(
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @group(0) @binding(0) var<storage, read> arr : array<S>;
@@ -153,7 +153,7 @@
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<S>, result : ptr<function, u32>)
 
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @group(0) @binding(0) var<storage, read> arr : array<S>;
@@ -175,7 +175,7 @@
 TEST_F(CalculateArrayLengthTest, ArrayOfArrayOfStruct) {
   auto* src = R"(
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @group(0) @binding(0) var<storage, read> arr : array<array<S, 4>>;
@@ -190,7 +190,7 @@
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<array<S, 4u>>, result : ptr<function, u32>)
 
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @group(0) @binding(0) var<storage, read> arr : array<array<S, 4>>;
@@ -246,8 +246,8 @@
 TEST_F(CalculateArrayLengthTest, InSameBlock_Struct) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -265,8 +265,8 @@
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
 
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -290,8 +290,8 @@
 TEST_F(CalculateArrayLengthTest, Nested) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -313,8 +313,8 @@
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
 
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> sb : SB;
@@ -345,13 +345,13 @@
 TEST_F(CalculateArrayLengthTest, MultipleStorageBuffers) {
   auto* src = R"(
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 };
 
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 };
 
 @group(0) @binding(0) var<storage, read> sb1 : SB1;
@@ -380,13 +380,13 @@
 fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<i32>, result : ptr<function, u32>)
 
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 }
 
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 }
 
 @group(0) @binding(0) var<storage, read> sb1 : SB1;
@@ -421,8 +421,8 @@
 TEST_F(CalculateArrayLengthTest, Shadowing) {
   auto* src = R"(
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> a : SB;
@@ -444,8 +444,8 @@
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
 
 struct SB {
-  x : i32;
-  arr : array<i32>;
+  x : i32,
+  arr : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> a : SB;
@@ -485,15 +485,15 @@
 @group(0) @binding(0) var<storage, read> sb1 : SB1;
 
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 };
 
 @group(0) @binding(1) var<storage, read> sb2 : SB2;
 
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 };
 
 @group(0) @binding(2) var<storage, read> sb3 : array<i32>;
@@ -529,15 +529,15 @@
 @group(0) @binding(0) var<storage, read> sb1 : SB1;
 
 struct SB1 {
-  x : i32;
-  arr1 : array<i32>;
+  x : i32,
+  arr1 : array<i32>,
 }
 
 @group(0) @binding(1) var<storage, read> sb2 : SB2;
 
 struct SB2 {
-  x : i32;
-  arr2 : array<vec4<f32>>;
+  x : i32,
+  arr2 : array<vec4<f32>>,
 }
 
 @group(0) @binding(2) var<storage, read> sb3 : array<i32>;
diff --git a/src/tint/transform/canonicalize_entry_point_io_test.cc b/src/tint/transform/canonicalize_entry_point_io_test.cc
index 8866f13..6147fe0 100644
--- a/src/tint/transform/canonicalize_entry_point_io_test.cc
+++ b/src/tint/transform/canonicalize_entry_point_io_test.cc
@@ -106,9 +106,9 @@
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(1)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(flat)
-  loc2 : vec4<u32>;
+  loc2 : vec4<u32>,
 }
 
 fn frag_main_inner(loc1 : f32, loc2 : vec4<u32>, coord : vec4<f32>) {
@@ -142,11 +142,11 @@
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(1)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(flat)
-  loc2 : vec4<u32>;
+  loc2 : vec4<u32>,
   @builtin(position)
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 fn frag_main_inner(loc1 : f32, loc2 : vec4<u32>, coord : vec4<f32>) {
@@ -182,7 +182,7 @@
 
 struct tint_symbol_1 {
   @location(1)
-  loc1 : f32;
+  loc1 : f32,
 }
 
 fn frag_main_inner(loc1 : myf32) {
@@ -216,7 +216,7 @@
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(1)
-  loc1 : f32;
+  loc1 : f32,
 }
 
 fn frag_main_inner(loc1 : myf32) {
@@ -242,11 +242,11 @@
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_Spirv) {
   auto* src = R"(
 struct FragBuiltins {
-  @builtin(position) coord : vec4<f32>;
+  @builtin(position) coord : vec4<f32>,
 };
 struct FragLocations {
-  @location(1) loc1 : f32;
-  @location(2) @interpolate(flat) loc2 : vec4<u32>;
+  @location(1) loc1 : f32,
+  @location(2) @interpolate(flat) loc2 : vec4<u32>,
 };
 
 @stage(fragment)
@@ -267,12 +267,12 @@
 @builtin(position) @internal(disable_validation__ignore_storage_class) var<in> coord_1 : vec4<f32>;
 
 struct FragBuiltins {
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 struct FragLocations {
-  loc1 : f32;
-  loc2 : vec4<u32>;
+  loc1 : f32,
+  loc2 : vec4<u32>,
 }
 
 fn frag_main_inner(loc0 : f32, locations : FragLocations, builtins : FragBuiltins) {
@@ -303,11 +303,11 @@
 }
 
 struct FragBuiltins {
-  @builtin(position) coord : vec4<f32>;
+  @builtin(position) coord : vec4<f32>,
 };
 struct FragLocations {
-  @location(1) loc1 : f32;
-  @location(2) @interpolate(flat) loc2 : vec4<u32>;
+  @location(1) loc1 : f32,
+  @location(2) @interpolate(flat) loc2 : vec4<u32>,
 };
 )";
 
@@ -330,12 +330,12 @@
 }
 
 struct FragBuiltins {
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 struct FragLocations {
-  loc1 : f32;
-  loc2 : vec4<u32>;
+  loc1 : f32,
+  loc2 : vec4<u32>,
 }
 )";
 
@@ -350,11 +350,11 @@
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_kMsl) {
   auto* src = R"(
 struct FragBuiltins {
-  @builtin(position) coord : vec4<f32>;
+  @builtin(position) coord : vec4<f32>,
 };
 struct FragLocations {
-  @location(1) loc1 : f32;
-  @location(2) @interpolate(flat) loc2 : vec4<u32>;
+  @location(1) loc1 : f32,
+  @location(2) @interpolate(flat) loc2 : vec4<u32>,
 };
 
 @stage(fragment)
@@ -367,21 +367,21 @@
 
   auto* expect = R"(
 struct FragBuiltins {
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 struct FragLocations {
-  loc1 : f32;
-  loc2 : vec4<u32>;
+  loc1 : f32,
+  loc2 : vec4<u32>,
 }
 
 struct tint_symbol_1 {
   @location(0)
-  loc0 : f32;
+  loc0 : f32,
   @location(1)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(flat)
-  loc2 : vec4<u32>;
+  loc2 : vec4<u32>,
 }
 
 fn frag_main_inner(loc0 : f32, locations : FragLocations, builtins : FragBuiltins) {
@@ -412,22 +412,22 @@
 }
 
 struct FragBuiltins {
-  @builtin(position) coord : vec4<f32>;
+  @builtin(position) coord : vec4<f32>,
 };
 struct FragLocations {
-  @location(1) loc1 : f32;
-  @location(2) @interpolate(flat) loc2 : vec4<u32>;
+  @location(1) loc1 : f32,
+  @location(2) @interpolate(flat) loc2 : vec4<u32>,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(0)
-  loc0 : f32;
+  loc0 : f32,
   @location(1)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(flat)
-  loc2 : vec4<u32>;
+  loc2 : vec4<u32>,
 }
 
 fn frag_main_inner(loc0 : f32, locations : FragLocations, builtins : FragBuiltins) {
@@ -440,12 +440,12 @@
 }
 
 struct FragBuiltins {
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 struct FragLocations {
-  loc1 : f32;
-  loc2 : vec4<u32>;
+  loc1 : f32,
+  loc2 : vec4<u32>,
 }
 )";
 
@@ -460,11 +460,11 @@
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_Hlsl) {
   auto* src = R"(
 struct FragBuiltins {
-  @builtin(position) coord : vec4<f32>;
+  @builtin(position) coord : vec4<f32>,
 };
 struct FragLocations {
-  @location(1) loc1 : f32;
-  @location(2) @interpolate(flat) loc2 : vec4<u32>;
+  @location(1) loc1 : f32,
+  @location(2) @interpolate(flat) loc2 : vec4<u32>,
 };
 
 @stage(fragment)
@@ -477,23 +477,23 @@
 
   auto* expect = R"(
 struct FragBuiltins {
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 struct FragLocations {
-  loc1 : f32;
-  loc2 : vec4<u32>;
+  loc1 : f32,
+  loc2 : vec4<u32>,
 }
 
 struct tint_symbol_1 {
   @location(0)
-  loc0 : f32;
+  loc0 : f32,
   @location(1)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(flat)
-  loc2 : vec4<u32>;
+  loc2 : vec4<u32>,
   @builtin(position)
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 fn frag_main_inner(loc0 : f32, locations : FragLocations, builtins : FragBuiltins) {
@@ -524,24 +524,24 @@
 }
 
 struct FragBuiltins {
-  @builtin(position) coord : vec4<f32>;
+  @builtin(position) coord : vec4<f32>,
 };
 struct FragLocations {
-  @location(1) loc1 : f32;
-  @location(2) @interpolate(flat) loc2 : vec4<u32>;
+  @location(1) loc1 : f32,
+  @location(2) @interpolate(flat) loc2 : vec4<u32>,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(0)
-  loc0 : f32;
+  loc0 : f32,
   @location(1)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(flat)
-  loc2 : vec4<u32>;
+  loc2 : vec4<u32>,
   @builtin(position)
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 fn frag_main_inner(loc0 : f32, locations : FragLocations, builtins : FragBuiltins) {
@@ -554,12 +554,12 @@
 }
 
 struct FragBuiltins {
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 struct FragLocations {
-  loc1 : f32;
-  loc2 : vec4<u32>;
+  loc1 : f32,
+  loc2 : vec4<u32>,
 }
 )";
 
@@ -612,7 +612,7 @@
   auto* expect = R"(
 struct tint_symbol {
   @builtin(frag_depth)
-  value : f32;
+  value : f32,
 }
 
 fn frag_main_inner() -> f32 {
@@ -647,7 +647,7 @@
   auto* expect = R"(
 struct tint_symbol {
   @builtin(frag_depth)
-  value : f32;
+  value : f32,
 }
 
 fn frag_main_inner() -> f32 {
@@ -674,9 +674,9 @@
 TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Spirv) {
   auto* src = R"(
 struct FragOutput {
-  @location(0) color : vec4<f32>;
-  @builtin(frag_depth) depth : f32;
-  @builtin(sample_mask) mask : u32;
+  @location(0) color : vec4<f32>,
+  @builtin(frag_depth) depth : f32,
+  @builtin(sample_mask) mask : u32,
 };
 
 @stage(fragment)
@@ -697,9 +697,9 @@
 @builtin(sample_mask) @internal(disable_validation__ignore_storage_class) var<out> mask_1 : array<u32, 1>;
 
 struct FragOutput {
-  color : vec4<f32>;
-  depth : f32;
-  mask : u32;
+  color : vec4<f32>,
+  depth : f32,
+  mask : u32,
 }
 
 fn frag_main_inner() -> FragOutput {
@@ -739,9 +739,9 @@
 }
 
 struct FragOutput {
-  @location(0) color : vec4<f32>;
-  @builtin(frag_depth) depth : f32;
-  @builtin(sample_mask) mask : u32;
+  @location(0) color : vec4<f32>,
+  @builtin(frag_depth) depth : f32,
+  @builtin(sample_mask) mask : u32,
 };
 )";
 
@@ -769,9 +769,9 @@
 }
 
 struct FragOutput {
-  color : vec4<f32>;
-  depth : f32;
-  mask : u32;
+  color : vec4<f32>,
+  depth : f32,
+  mask : u32,
 }
 )";
 
@@ -786,9 +786,9 @@
 TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Msl) {
   auto* src = R"(
 struct FragOutput {
-  @location(0) color : vec4<f32>;
-  @builtin(frag_depth) depth : f32;
-  @builtin(sample_mask) mask : u32;
+  @location(0) color : vec4<f32>,
+  @builtin(frag_depth) depth : f32,
+  @builtin(sample_mask) mask : u32,
 };
 
 @stage(fragment)
@@ -803,18 +803,18 @@
 
   auto* expect = R"(
 struct FragOutput {
-  color : vec4<f32>;
-  depth : f32;
-  mask : u32;
+  color : vec4<f32>,
+  depth : f32,
+  mask : u32,
 }
 
 struct tint_symbol {
   @location(0)
-  color : vec4<f32>;
+  color : vec4<f32>,
   @builtin(frag_depth)
-  depth : f32;
+  depth : f32,
   @builtin(sample_mask)
-  mask : u32;
+  mask : u32,
 }
 
 fn frag_main_inner() -> FragOutput {
@@ -856,20 +856,20 @@
 }
 
 struct FragOutput {
-  @location(0) color : vec4<f32>;
-  @builtin(frag_depth) depth : f32;
-  @builtin(sample_mask) mask : u32;
+  @location(0) color : vec4<f32>,
+  @builtin(frag_depth) depth : f32,
+  @builtin(sample_mask) mask : u32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol {
   @location(0)
-  color : vec4<f32>;
+  color : vec4<f32>,
   @builtin(frag_depth)
-  depth : f32;
+  depth : f32,
   @builtin(sample_mask)
-  mask : u32;
+  mask : u32,
 }
 
 fn frag_main_inner() -> FragOutput {
@@ -891,9 +891,9 @@
 }
 
 struct FragOutput {
-  color : vec4<f32>;
-  depth : f32;
-  mask : u32;
+  color : vec4<f32>,
+  depth : f32,
+  mask : u32,
 }
 )";
 
@@ -908,9 +908,9 @@
 TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Hlsl) {
   auto* src = R"(
 struct FragOutput {
-  @location(0) color : vec4<f32>;
-  @builtin(frag_depth) depth : f32;
-  @builtin(sample_mask) mask : u32;
+  @location(0) color : vec4<f32>,
+  @builtin(frag_depth) depth : f32,
+  @builtin(sample_mask) mask : u32,
 };
 
 @stage(fragment)
@@ -925,18 +925,18 @@
 
   auto* expect = R"(
 struct FragOutput {
-  color : vec4<f32>;
-  depth : f32;
-  mask : u32;
+  color : vec4<f32>,
+  depth : f32,
+  mask : u32,
 }
 
 struct tint_symbol {
   @location(0)
-  color : vec4<f32>;
+  color : vec4<f32>,
   @builtin(frag_depth)
-  depth : f32;
+  depth : f32,
   @builtin(sample_mask)
-  mask : u32;
+  mask : u32,
 }
 
 fn frag_main_inner() -> FragOutput {
@@ -978,20 +978,20 @@
 }
 
 struct FragOutput {
-  @location(0) color : vec4<f32>;
-  @builtin(frag_depth) depth : f32;
-  @builtin(sample_mask) mask : u32;
+  @location(0) color : vec4<f32>,
+  @builtin(frag_depth) depth : f32,
+  @builtin(sample_mask) mask : u32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol {
   @location(0)
-  color : vec4<f32>;
+  color : vec4<f32>,
   @builtin(frag_depth)
-  depth : f32;
+  depth : f32,
   @builtin(sample_mask)
-  mask : u32;
+  mask : u32,
 }
 
 fn frag_main_inner() -> FragOutput {
@@ -1013,9 +1013,9 @@
 }
 
 struct FragOutput {
-  color : vec4<f32>;
-  depth : f32;
-  mask : u32;
+  color : vec4<f32>,
+  depth : f32,
+  mask : u32,
 }
 )";
 
@@ -1031,8 +1031,8 @@
        StructParameters_SharedDeviceFunction_Spirv) {
   auto* src = R"(
 struct FragmentInput {
-  @location(0) value : f32;
-  @location(1) mul : f32;
+  @location(0) value : f32,
+  @location(1) mul : f32,
 };
 
 fn foo(x : FragmentInput) -> f32 {
@@ -1060,8 +1060,8 @@
 @location(1) @internal(disable_validation__ignore_storage_class) var<in> mul_2 : f32;
 
 struct FragmentInput {
-  value : f32;
-  mul : f32;
+  value : f32,
+  mul : f32,
 }
 
 fn foo(x : FragmentInput) -> f32 {
@@ -1113,8 +1113,8 @@
 }
 
 struct FragmentInput {
-  @location(0) value : f32;
-  @location(1) mul : f32;
+  @location(0) value : f32,
+  @location(1) mul : f32,
 };
 )";
 
@@ -1150,8 +1150,8 @@
 }
 
 struct FragmentInput {
-  value : f32;
-  mul : f32;
+  value : f32,
+  mul : f32,
 }
 )";
 
@@ -1167,8 +1167,8 @@
        StructParameters_SharedDeviceFunction_Msl) {
   auto* src = R"(
 struct FragmentInput {
-  @location(0) value : f32;
-  @location(1) mul : f32;
+  @location(0) value : f32,
+  @location(1) mul : f32,
 };
 
 fn foo(x : FragmentInput) -> f32 {
@@ -1188,8 +1188,8 @@
 
   auto* expect = R"(
 struct FragmentInput {
-  value : f32;
-  mul : f32;
+  value : f32,
+  mul : f32,
 }
 
 fn foo(x : FragmentInput) -> f32 {
@@ -1198,9 +1198,9 @@
 
 struct tint_symbol_1 {
   @location(0)
-  value : f32;
+  value : f32,
   @location(1)
-  mul : f32;
+  mul : f32,
 }
 
 fn frag_main1_inner(inputs : FragmentInput) {
@@ -1214,9 +1214,9 @@
 
 struct tint_symbol_3 {
   @location(0)
-  value : f32;
+  value : f32,
   @location(1)
-  mul : f32;
+  mul : f32,
 }
 
 fn frag_main2_inner(inputs : FragmentInput) {
@@ -1255,17 +1255,17 @@
 }
 
 struct FragmentInput {
-  @location(0) value : f32;
-  @location(1) mul : f32;
+  @location(0) value : f32,
+  @location(1) mul : f32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(0)
-  value : f32;
+  value : f32,
   @location(1)
-  mul : f32;
+  mul : f32,
 }
 
 fn frag_main1_inner(inputs : FragmentInput) {
@@ -1279,9 +1279,9 @@
 
 struct tint_symbol_3 {
   @location(0)
-  value : f32;
+  value : f32,
   @location(1)
-  mul : f32;
+  mul : f32,
 }
 
 fn frag_main2_inner(inputs : FragmentInput) {
@@ -1298,8 +1298,8 @@
 }
 
 struct FragmentInput {
-  value : f32;
-  mul : f32;
+  value : f32,
+  mul : f32,
 }
 )";
 
@@ -1315,8 +1315,8 @@
        StructParameters_SharedDeviceFunction_Hlsl) {
   auto* src = R"(
 struct FragmentInput {
-  @location(0) value : f32;
-  @location(1) mul : f32;
+  @location(0) value : f32,
+  @location(1) mul : f32,
 };
 
 fn foo(x : FragmentInput) -> f32 {
@@ -1336,8 +1336,8 @@
 
   auto* expect = R"(
 struct FragmentInput {
-  value : f32;
-  mul : f32;
+  value : f32,
+  mul : f32,
 }
 
 fn foo(x : FragmentInput) -> f32 {
@@ -1346,9 +1346,9 @@
 
 struct tint_symbol_1 {
   @location(0)
-  value : f32;
+  value : f32,
   @location(1)
-  mul : f32;
+  mul : f32,
 }
 
 fn frag_main1_inner(inputs : FragmentInput) {
@@ -1362,9 +1362,9 @@
 
 struct tint_symbol_3 {
   @location(0)
-  value : f32;
+  value : f32,
   @location(1)
-  mul : f32;
+  mul : f32,
 }
 
 fn frag_main2_inner(inputs : FragmentInput) {
@@ -1403,17 +1403,17 @@
 }
 
 struct FragmentInput {
-  @location(0) value : f32;
-  @location(1) mul : f32;
+  @location(0) value : f32,
+  @location(1) mul : f32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(0)
-  value : f32;
+  value : f32,
   @location(1)
-  mul : f32;
+  mul : f32,
 }
 
 fn frag_main1_inner(inputs : FragmentInput) {
@@ -1427,9 +1427,9 @@
 
 struct tint_symbol_3 {
   @location(0)
-  value : f32;
+  value : f32,
   @location(1)
-  mul : f32;
+  mul : f32,
 }
 
 fn frag_main2_inner(inputs : FragmentInput) {
@@ -1446,8 +1446,8 @@
 }
 
 struct FragmentInput {
-  value : f32;
-  mul : f32;
+  value : f32,
+  mul : f32,
 }
 )";
 
@@ -1462,8 +1462,8 @@
 TEST_F(CanonicalizeEntryPointIOTest, Struct_ModuleScopeVariable) {
   auto* src = R"(
 struct FragmentInput {
-  @location(0) col1 : f32;
-  @location(1) col2 : f32;
+  @location(0) col1 : f32,
+  @location(1) col2 : f32,
 };
 
 var<private> global_inputs : FragmentInput;
@@ -1486,8 +1486,8 @@
 
   auto* expect = R"(
 struct FragmentInput {
-  col1 : f32;
-  col2 : f32;
+  col1 : f32,
+  col2 : f32,
 }
 
 var<private> global_inputs : FragmentInput;
@@ -1502,9 +1502,9 @@
 
 struct tint_symbol_1 {
   @location(0)
-  col1 : f32;
+  col1 : f32,
   @location(1)
-  col2 : f32;
+  col2 : f32,
 }
 
 fn frag_main1_inner(inputs : FragmentInput) {
@@ -1547,17 +1547,17 @@
 var<private> global_inputs : FragmentInput;
 
 struct FragmentInput {
-  @location(0) col1 : f32;
-  @location(1) col2 : f32;
+  @location(0) col1 : f32,
+  @location(1) col2 : f32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(0)
-  col1 : f32;
+  col1 : f32,
   @location(1)
-  col2 : f32;
+  col2 : f32,
 }
 
 fn frag_main1_inner(inputs : FragmentInput) {
@@ -1582,8 +1582,8 @@
 var<private> global_inputs : FragmentInput;
 
 struct FragmentInput {
-  col1 : f32;
-  col2 : f32;
+  col1 : f32,
+  col2 : f32,
 }
 )";
 
@@ -1600,13 +1600,13 @@
 type myf32 = f32;
 
 struct FragmentInput {
-  @location(0) col1 : myf32;
-  @location(1) col2 : myf32;
+  @location(0) col1 : myf32,
+  @location(1) col2 : myf32,
 };
 
 struct FragmentOutput {
-  @location(0) col1 : myf32;
-  @location(1) col2 : myf32;
+  @location(0) col1 : myf32,
+  @location(1) col2 : myf32,
 };
 
 type MyFragmentInput = FragmentInput;
@@ -1628,13 +1628,13 @@
 type myf32 = f32;
 
 struct FragmentInput {
-  col1 : myf32;
-  col2 : myf32;
+  col1 : myf32,
+  col2 : myf32,
 }
 
 struct FragmentOutput {
-  col1 : myf32;
-  col2 : myf32;
+  col1 : myf32,
+  col2 : myf32,
 }
 
 type MyFragmentInput = FragmentInput;
@@ -1647,16 +1647,16 @@
 
 struct tint_symbol_1 {
   @location(0)
-  col1 : f32;
+  col1 : f32,
   @location(1)
-  col2 : f32;
+  col2 : f32,
 }
 
 struct tint_symbol_2 {
   @location(0)
-  col1 : f32;
+  col1 : f32,
   @location(1)
-  col2 : f32;
+  col2 : f32,
 }
 
 fn frag_main_inner(inputs : MyFragmentInput) -> MyFragmentOutput {
@@ -1699,13 +1699,13 @@
 }
 
 struct FragmentInput {
-  @location(0) col1 : myf32;
-  @location(1) col2 : myf32;
+  @location(0) col1 : myf32,
+  @location(1) col2 : myf32,
 };
 
 struct FragmentOutput {
-  @location(0) col1 : myf32;
-  @location(1) col2 : myf32;
+  @location(0) col1 : myf32,
+  @location(1) col2 : myf32,
 };
 
 type myf32 = f32;
@@ -1714,16 +1714,16 @@
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(0)
-  col1 : f32;
+  col1 : f32,
   @location(1)
-  col2 : f32;
+  col2 : f32,
 }
 
 struct tint_symbol_2 {
   @location(0)
-  col1 : f32;
+  col1 : f32,
   @location(1)
-  col2 : f32;
+  col2 : f32,
 }
 
 fn frag_main_inner(inputs : MyFragmentInput) -> MyFragmentOutput {
@@ -1749,13 +1749,13 @@
 }
 
 struct FragmentInput {
-  col1 : myf32;
-  col2 : myf32;
+  col1 : myf32,
+  col2 : myf32,
 }
 
 struct FragmentOutput {
-  col1 : myf32;
-  col2 : myf32;
+  col1 : myf32,
+  col2 : myf32,
 }
 
 type myf32 = f32;
@@ -1772,15 +1772,15 @@
 TEST_F(CanonicalizeEntryPointIOTest, InterpolateAttributes) {
   auto* src = R"(
 struct VertexOut {
-  @builtin(position) pos : vec4<f32>;
-  @location(1) @interpolate(flat) loc1: f32;
-  @location(2) @interpolate(linear, sample) loc2 : f32;
-  @location(3) @interpolate(perspective, centroid) loc3 : f32;
+  @builtin(position) pos : vec4<f32>,
+  @location(1) @interpolate(flat) loc1 : f32,
+  @location(2) @interpolate(linear, sample) loc2 : f32,
+  @location(3) @interpolate(perspective, centroid) loc3 : f32,
 };
 
 struct FragmentIn {
-  @location(1) @interpolate(flat) loc1: f32;
-  @location(2) @interpolate(linear, sample) loc2 : f32;
+  @location(1) @interpolate(flat) loc1 : f32,
+  @location(2) @interpolate(linear, sample) loc2 : f32,
 };
 
 @stage(vertex)
@@ -1797,26 +1797,26 @@
 
   auto* expect = R"(
 struct VertexOut {
-  pos : vec4<f32>;
-  loc1 : f32;
-  loc2 : f32;
-  loc3 : f32;
+  pos : vec4<f32>,
+  loc1 : f32,
+  loc2 : f32,
+  loc3 : f32,
 }
 
 struct FragmentIn {
-  loc1 : f32;
-  loc2 : f32;
+  loc1 : f32,
+  loc2 : f32,
 }
 
 struct tint_symbol {
   @location(1) @interpolate(flat)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(linear, sample)
-  loc2 : f32;
+  loc2 : f32,
   @location(3) @interpolate(perspective, centroid)
-  loc3 : f32;
+  loc3 : f32,
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 fn vert_main_inner() -> VertexOut {
@@ -1836,11 +1836,11 @@
 
 struct tint_symbol_2 {
   @location(1) @interpolate(flat)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(linear, sample)
-  loc2 : f32;
+  loc2 : f32,
   @location(3) @interpolate(perspective, centroid)
-  loc3 : f32;
+  loc3 : f32,
 }
 
 fn frag_main_inner(inputs : FragmentIn, loc3 : f32) {
@@ -1875,26 +1875,26 @@
 }
 
 struct VertexOut {
-  @builtin(position) pos : vec4<f32>;
-  @location(1) @interpolate(flat) loc1: f32;
-  @location(2) @interpolate(linear, sample) loc2 : f32;
-  @location(3) @interpolate(perspective, centroid) loc3 : f32;
+  @builtin(position) pos : vec4<f32>,
+  @location(1) @interpolate(flat) loc1 : f32,
+  @location(2) @interpolate(linear, sample) loc2 : f32,
+  @location(3) @interpolate(perspective, centroid) loc3 : f32,
 };
 
 struct FragmentIn {
-  @location(1) @interpolate(flat) loc1: f32;
-  @location(2) @interpolate(linear, sample) loc2 : f32;
+  @location(1) @interpolate(flat) loc1: f32,
+  @location(2) @interpolate(linear, sample) loc2 : f32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(1) @interpolate(flat)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(linear, sample)
-  loc2 : f32;
+  loc2 : f32,
   @location(3) @interpolate(perspective, centroid)
-  loc3 : f32;
+  loc3 : f32,
 }
 
 fn frag_main_inner(inputs : FragmentIn, loc3 : f32) {
@@ -1908,13 +1908,13 @@
 
 struct tint_symbol_2 {
   @location(1) @interpolate(flat)
-  loc1 : f32;
+  loc1 : f32,
   @location(2) @interpolate(linear, sample)
-  loc2 : f32;
+  loc2 : f32,
   @location(3) @interpolate(perspective, centroid)
-  loc3 : f32;
+  loc3 : f32,
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 fn vert_main_inner() -> VertexOut {
@@ -1933,15 +1933,15 @@
 }
 
 struct VertexOut {
-  pos : vec4<f32>;
-  loc1 : f32;
-  loc2 : f32;
-  loc3 : f32;
+  pos : vec4<f32>,
+  loc1 : f32,
+  loc2 : f32,
+  loc3 : f32,
 }
 
 struct FragmentIn {
-  loc1 : f32;
-  loc2 : f32;
+  loc1 : f32,
+  loc2 : f32,
 }
 )";
 
@@ -1958,25 +1958,25 @@
   // fragment inputs, but not vertex inputs or fragment outputs.
   auto* src = R"(
 struct VertexIn {
-  @location(0) i : i32;
-  @location(1) u : u32;
-  @location(2) vi : vec4<i32>;
-  @location(3) vu : vec4<u32>;
+  @location(0) i : i32,
+  @location(1) u : u32,
+  @location(2) vi : vec4<i32>,
+  @location(3) vu : vec4<u32>,
 };
 
 struct VertexOut {
-  @location(0) @interpolate(flat) i : i32;
-  @location(1) @interpolate(flat) u : u32;
-  @location(2) @interpolate(flat) vi : vec4<i32>;
-  @location(3) @interpolate(flat) vu : vec4<u32>;
-  @builtin(position) pos : vec4<f32>;
+  @location(0) @interpolate(flat) i : i32,
+  @location(1) @interpolate(flat) u : u32,
+  @location(2) @interpolate(flat) vi : vec4<i32>,
+  @location(3) @interpolate(flat) vu : vec4<u32>,
+  @builtin(position) pos : vec4<f32>,
 };
 
 struct FragmentInterface {
-  @location(0) @interpolate(flat) i : i32;
-  @location(1) @interpolate(flat) u : u32;
-  @location(2) @interpolate(flat) vi : vec4<i32>;
-  @location(3) @interpolate(flat) vu : vec4<u32>;
+  @location(0) @interpolate(flat) i : i32,
+  @location(1) @interpolate(flat) u : u32,
+  @location(2) @interpolate(flat) vi : vec4<i32>,
+  @location(3) @interpolate(flat) vu : vec4<u32>,
 };
 
 @stage(vertex)
@@ -2027,25 +2027,25 @@
 @location(3) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<out> vu_4 : vec4<u32>;
 
 struct VertexIn {
-  i : i32;
-  u : u32;
-  vi : vec4<i32>;
-  vu : vec4<u32>;
+  i : i32,
+  u : u32,
+  vi : vec4<i32>,
+  vu : vec4<u32>,
 }
 
 struct VertexOut {
-  i : i32;
-  u : u32;
-  vi : vec4<i32>;
-  vu : vec4<u32>;
-  pos : vec4<f32>;
+  i : i32,
+  u : u32,
+  vi : vec4<i32>,
+  vu : vec4<u32>,
+  pos : vec4<f32>,
 }
 
 struct FragmentInterface {
-  i : i32;
-  u : u32;
-  vi : vec4<i32>;
-  vu : vec4<u32>;
+  i : i32,
+  u : u32,
+  vi : vec4<i32>,
+  vu : vec4<u32>,
 }
 
 fn vert_main_inner(in : VertexIn) -> VertexOut {
@@ -2100,25 +2100,25 @@
 }
 
 struct VertexIn {
-  @location(0) i : i32;
-  @location(1) u : u32;
-  @location(2) vi : vec4<i32>;
-  @location(3) vu : vec4<u32>;
+  @location(0) i : i32,
+  @location(1) u : u32,
+  @location(2) vi : vec4<i32>,
+  @location(3) vu : vec4<u32>,
 };
 
 struct VertexOut {
-  @location(0) @interpolate(flat) i : i32;
-  @location(1) @interpolate(flat) u : u32;
-  @location(2) @interpolate(flat) vi : vec4<i32>;
-  @location(3) @interpolate(flat) vu : vec4<u32>;
-  @builtin(position) pos : vec4<f32>;
+  @location(0) @interpolate(flat) i : i32,
+  @location(1) @interpolate(flat) u : u32,
+  @location(2) @interpolate(flat) vi : vec4<i32>,
+  @location(3) @interpolate(flat) vu : vec4<u32>,
+  @builtin(position) pos : vec4<f32>,
 };
 
 struct FragmentInterface {
-  @location(0) @interpolate(flat) i : i32;
-  @location(1) @interpolate(flat) u : u32;
-  @location(2) @interpolate(flat) vi : vec4<i32>;
-  @location(3) @interpolate(flat) vu : vec4<u32>;
+  @location(0) @interpolate(flat) i : i32,
+  @location(1) @interpolate(flat) u : u32,
+  @location(2) @interpolate(flat) vi : vec4<i32>,
+  @location(3) @interpolate(flat) vu : vec4<u32>,
 };
 )";
 
@@ -2186,25 +2186,25 @@
 }
 
 struct VertexIn {
-  i : i32;
-  u : u32;
-  vi : vec4<i32>;
-  vu : vec4<u32>;
+  i : i32,
+  u : u32,
+  vi : vec4<i32>,
+  vu : vec4<u32>,
 }
 
 struct VertexOut {
-  i : i32;
-  u : u32;
-  vi : vec4<i32>;
-  vu : vec4<u32>;
-  pos : vec4<f32>;
+  i : i32,
+  u : u32,
+  vi : vec4<i32>,
+  vu : vec4<u32>,
+  pos : vec4<f32>,
 }
 
 struct FragmentInterface {
-  i : i32;
-  u : u32;
-  vi : vec4<i32>;
-  vu : vec4<u32>;
+  i : i32,
+  u : u32,
+  vi : vec4<i32>,
+  vu : vec4<u32>,
 }
 )";
 
@@ -2219,7 +2219,7 @@
 TEST_F(CanonicalizeEntryPointIOTest, InvariantAttributes) {
   auto* src = R"(
 struct VertexOut {
-  @builtin(position) @invariant pos : vec4<f32>;
+  @builtin(position) @invariant pos : vec4<f32>,
 };
 
 @stage(vertex)
@@ -2235,12 +2235,12 @@
 
   auto* expect = R"(
 struct VertexOut {
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 struct tint_symbol {
   @builtin(position) @invariant
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 fn main1_inner() -> VertexOut {
@@ -2257,7 +2257,7 @@
 
 struct tint_symbol_1 {
   @builtin(position) @invariant
-  value : vec4<f32>;
+  value : vec4<f32>,
 }
 
 fn main2_inner() -> vec4<f32> {
@@ -2294,14 +2294,14 @@
 }
 
 struct VertexOut {
-  @builtin(position) @invariant pos : vec4<f32>;
+  @builtin(position) @invariant pos : vec4<f32>,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol {
   @builtin(position) @invariant
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 fn main1_inner() -> VertexOut {
@@ -2318,7 +2318,7 @@
 
 struct tint_symbol_1 {
   @builtin(position) @invariant
-  value : vec4<f32>;
+  value : vec4<f32>,
 }
 
 fn main2_inner() -> vec4<f32> {
@@ -2334,7 +2334,7 @@
 }
 
 struct VertexOut {
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 )";
 
@@ -2349,13 +2349,13 @@
 TEST_F(CanonicalizeEntryPointIOTest, Struct_LayoutAttributes) {
   auto* src = R"(
 struct FragmentInput {
-  @size(16) @location(1) value : f32;
-  @builtin(position) @align(32) coord : vec4<f32>;
-  @location(0) @interpolate(linear, sample) @align(128) loc0 : f32;
+  @size(16) @location(1) value : f32,
+  @builtin(position) @align(32) coord : vec4<f32>,
+  @location(0) @interpolate(linear, sample) @align(128) loc0 : f32,
 };
 
 struct FragmentOutput {
-  @size(16) @location(1) @interpolate(flat) value : f32;
+  @size(16) @location(1) @interpolate(flat) value : f32,
 };
 
 @stage(fragment)
@@ -2367,30 +2367,30 @@
   auto* expect = R"(
 struct FragmentInput {
   @size(16)
-  value : f32;
+  value : f32,
   @align(32)
-  coord : vec4<f32>;
+  coord : vec4<f32>,
   @align(128)
-  loc0 : f32;
+  loc0 : f32,
 }
 
 struct FragmentOutput {
   @size(16)
-  value : f32;
+  value : f32,
 }
 
 struct tint_symbol_1 {
   @location(0) @interpolate(linear, sample)
-  loc0 : f32;
+  loc0 : f32,
   @location(1)
-  value : f32;
+  value : f32,
   @builtin(position)
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 struct tint_symbol_2 {
   @location(1) @interpolate(flat)
-  value : f32;
+  value : f32,
 }
 
 fn frag_main_inner(inputs : FragmentInput) -> FragmentOutput {
@@ -2422,29 +2422,29 @@
 }
 
 struct FragmentInput {
-  @size(16) @location(1) value : f32;
-  @builtin(position) @align(32) coord : vec4<f32>;
-  @location(0) @interpolate(linear, sample) @align(128) loc0 : f32;
+  @size(16) @location(1) value : f32,
+  @builtin(position) @align(32) coord : vec4<f32>,
+  @location(0) @interpolate(linear, sample) @align(128) loc0 : f32,
 };
 
 struct FragmentOutput {
-  @size(16) @location(1) @interpolate(flat) value : f32;
+  @size(16) @location(1) @interpolate(flat) value : f32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(0) @interpolate(linear, sample)
-  loc0 : f32;
+  loc0 : f32,
   @location(1)
-  value : f32;
+  value : f32,
   @builtin(position)
-  coord : vec4<f32>;
+  coord : vec4<f32>,
 }
 
 struct tint_symbol_2 {
   @location(1) @interpolate(flat)
-  value : f32;
+  value : f32,
 }
 
 fn frag_main_inner(inputs : FragmentInput) -> FragmentOutput {
@@ -2461,16 +2461,16 @@
 
 struct FragmentInput {
   @size(16)
-  value : f32;
+  value : f32,
   @align(32)
-  coord : vec4<f32>;
+  coord : vec4<f32>,
   @align(128)
-  loc0 : f32;
+  loc0 : f32,
 }
 
 struct FragmentOutput {
   @size(16)
-  value : f32;
+  value : f32,
 }
 )";
 
@@ -2485,17 +2485,17 @@
 TEST_F(CanonicalizeEntryPointIOTest, SortedMembers) {
   auto* src = R"(
 struct VertexOutput {
-  @location(1) @interpolate(flat) b : u32;
-  @builtin(position) pos : vec4<f32>;
-  @location(3) @interpolate(flat) d : u32;
-  @location(0) a : f32;
-  @location(2) @interpolate(flat) c : i32;
+  @location(1) @interpolate(flat) b : u32,
+  @builtin(position) pos : vec4<f32>,
+  @location(3) @interpolate(flat) d : u32,
+  @location(0) a : f32,
+  @location(2) @interpolate(flat) c : i32,
 };
 
 struct FragmentInputExtra {
-  @location(3) @interpolate(flat) d : u32;
-  @builtin(position) pos : vec4<f32>;
-  @location(0) a : f32;
+  @location(3) @interpolate(flat) d : u32,
+  @builtin(position) pos : vec4<f32>,
+  @location(0) a : f32,
 };
 
 @stage(vertex)
@@ -2513,30 +2513,30 @@
 
   auto* expect = R"(
 struct VertexOutput {
-  b : u32;
-  pos : vec4<f32>;
-  d : u32;
-  a : f32;
-  c : i32;
+  b : u32,
+  pos : vec4<f32>,
+  d : u32,
+  a : f32,
+  c : i32,
 }
 
 struct FragmentInputExtra {
-  d : u32;
-  pos : vec4<f32>;
-  a : f32;
+  d : u32,
+  pos : vec4<f32>,
+  a : f32,
 }
 
 struct tint_symbol {
   @location(0)
-  a : f32;
+  a : f32,
   @location(1) @interpolate(flat)
-  b : u32;
+  b : u32,
   @location(2) @interpolate(flat)
-  c : i32;
+  c : i32,
   @location(3) @interpolate(flat)
-  d : u32;
+  d : u32,
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 fn vert_main_inner() -> VertexOutput {
@@ -2557,17 +2557,17 @@
 
 struct tint_symbol_2 {
   @location(0)
-  a : f32;
+  a : f32,
   @location(1) @interpolate(flat)
-  b : u32;
+  b : u32,
   @location(2) @interpolate(flat)
-  c : i32;
+  c : i32,
   @location(3) @interpolate(flat)
-  d : u32;
+  d : u32,
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
   @builtin(front_facing)
-  ff : bool;
+  ff : bool,
 }
 
 fn frag_main_inner(ff : bool, c : i32, inputs : FragmentInputExtra, b : u32) {
@@ -2602,32 +2602,32 @@
 }
 
 struct VertexOutput {
-  @location(1) @interpolate(flat) b : u32;
-  @builtin(position) pos : vec4<f32>;
-  @location(3) @interpolate(flat) d : u32;
-  @location(0) a : f32;
-  @location(2) @interpolate(flat) c : i32;
+  @location(1) @interpolate(flat) b : u32,
+  @builtin(position) pos : vec4<f32>,
+  @location(3) @interpolate(flat) d : u32,
+  @location(0) a : f32,
+  @location(2) @interpolate(flat) c : i32,
 };
 
 struct FragmentInputExtra {
-  @location(3) @interpolate(flat) d : u32;
-  @builtin(position) pos : vec4<f32>;
-  @location(0) a : f32;
+  @location(3) @interpolate(flat) d : u32,
+  @builtin(position) pos : vec4<f32>,
+  @location(0) a : f32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol {
   @location(0)
-  a : f32;
+  a : f32,
   @location(1) @interpolate(flat)
-  b : u32;
+  b : u32,
   @location(2) @interpolate(flat)
-  c : i32;
+  c : i32,
   @location(3) @interpolate(flat)
-  d : u32;
+  d : u32,
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 fn vert_main_inner() -> VertexOutput {
@@ -2648,17 +2648,17 @@
 
 struct tint_symbol_2 {
   @location(0)
-  a : f32;
+  a : f32,
   @location(1) @interpolate(flat)
-  b : u32;
+  b : u32,
   @location(2) @interpolate(flat)
-  c : i32;
+  c : i32,
   @location(3) @interpolate(flat)
-  d : u32;
+  d : u32,
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
   @builtin(front_facing)
-  ff : bool;
+  ff : bool,
 }
 
 fn frag_main_inner(ff : bool, c : i32, inputs : FragmentInputExtra, b : u32) {
@@ -2670,17 +2670,17 @@
 }
 
 struct VertexOutput {
-  b : u32;
-  pos : vec4<f32>;
-  d : u32;
-  a : f32;
-  c : i32;
+  b : u32,
+  pos : vec4<f32>,
+  d : u32,
+  a : f32,
+  c : i32,
 }
 
 struct FragmentInputExtra {
-  d : u32;
-  pos : vec4<f32>;
-  a : f32;
+  d : u32,
+  pos : vec4<f32>,
+  a : f32,
 }
 )";
 
@@ -2702,7 +2702,7 @@
   auto* expect = R"(
 struct tint_symbol_2 {
   @location(0)
-  col : f32;
+  col : f32,
 }
 
 fn tint_symbol_1_inner(col : f32) {
@@ -2732,7 +2732,7 @@
   auto* expect = R"(
 struct tint_symbol {
   @builtin(sample_mask)
-  fixed_sample_mask : u32;
+  fixed_sample_mask : u32,
 }
 
 fn frag_main_inner() {
@@ -2766,7 +2766,7 @@
   auto* expect = R"(
 struct tint_symbol {
   @builtin(sample_mask)
-  fixed_sample_mask : u32;
+  fixed_sample_mask : u32,
 }
 
 fn frag_main_inner() {
@@ -2801,7 +2801,7 @@
   auto* expect = R"(
 struct tint_symbol {
   @builtin(sample_mask)
-  value : u32;
+  value : u32,
 }
 
 fn frag_main_inner() -> u32 {
@@ -2836,9 +2836,9 @@
   auto* expect = R"(
 struct tint_symbol {
   @location(0)
-  value : f32;
+  value : f32,
   @builtin(sample_mask)
-  fixed_sample_mask : u32;
+  fixed_sample_mask : u32,
 }
 
 fn frag_main_inner() -> f32 {
@@ -2866,9 +2866,9 @@
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_StructWithAuthoredMask) {
   auto* src = R"(
 struct Output {
-  @builtin(frag_depth) depth : f32;
-  @builtin(sample_mask) mask : u32;
-  @location(0) value : f32;
+  @builtin(frag_depth) depth : f32,
+  @builtin(sample_mask) mask : u32,
+  @location(0) value : f32,
 };
 
 @stage(fragment)
@@ -2879,18 +2879,18 @@
 
   auto* expect = R"(
 struct Output {
-  depth : f32;
-  mask : u32;
-  value : f32;
+  depth : f32,
+  mask : u32,
+  value : f32,
 }
 
 struct tint_symbol {
   @location(0)
-  value : f32;
+  value : f32,
   @builtin(frag_depth)
-  depth : f32;
+  depth : f32,
   @builtin(sample_mask)
-  mask : u32;
+  mask : u32,
 }
 
 fn frag_main_inner() -> Output {
@@ -2925,20 +2925,20 @@
 }
 
 struct Output {
-  @builtin(frag_depth) depth : f32;
-  @builtin(sample_mask) mask : u32;
-  @location(0) value : f32;
+  @builtin(frag_depth) depth : f32,
+  @builtin(sample_mask) mask : u32,
+  @location(0) value : f32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol {
   @location(0)
-  value : f32;
+  value : f32,
   @builtin(frag_depth)
-  depth : f32;
+  depth : f32,
   @builtin(sample_mask)
-  mask : u32;
+  mask : u32,
 }
 
 fn frag_main_inner() -> Output {
@@ -2956,9 +2956,9 @@
 }
 
 struct Output {
-  depth : f32;
-  mask : u32;
-  value : f32;
+  depth : f32,
+  mask : u32,
+  value : f32,
 }
 )";
 
@@ -2974,8 +2974,8 @@
        FixedSampleMask_StructWithoutAuthoredMask) {
   auto* src = R"(
 struct Output {
-  @builtin(frag_depth) depth : f32;
-  @location(0) value : f32;
+  @builtin(frag_depth) depth : f32,
+  @location(0) value : f32,
 };
 
 @stage(fragment)
@@ -2986,17 +2986,17 @@
 
   auto* expect = R"(
 struct Output {
-  depth : f32;
-  value : f32;
+  depth : f32,
+  value : f32,
 }
 
 struct tint_symbol {
   @location(0)
-  value : f32;
+  value : f32,
   @builtin(frag_depth)
-  depth : f32;
+  depth : f32,
   @builtin(sample_mask)
-  fixed_sample_mask : u32;
+  fixed_sample_mask : u32,
 }
 
 fn frag_main_inner() -> Output {
@@ -3031,19 +3031,19 @@
 }
 
 struct Output {
-  @builtin(frag_depth) depth : f32;
-  @location(0) value : f32;
+  @builtin(frag_depth) depth : f32,
+  @location(0) value : f32,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol {
   @location(0)
-  value : f32;
+  value : f32,
   @builtin(frag_depth)
-  depth : f32;
+  depth : f32,
   @builtin(sample_mask)
-  fixed_sample_mask : u32;
+  fixed_sample_mask : u32,
 }
 
 fn frag_main_inner() -> Output {
@@ -3061,8 +3061,8 @@
 }
 
 struct Output {
-  depth : f32;
-  value : f32;
+  depth : f32,
+  value : f32,
 }
 )";
 
@@ -3099,7 +3099,7 @@
   auto* expect = R"(
 struct tint_symbol {
   @builtin(sample_mask)
-  value : u32;
+  value : u32,
 }
 
 fn frag_main1_inner() -> u32 {
@@ -3116,9 +3116,9 @@
 
 struct tint_symbol_1 {
   @location(0)
-  value : f32;
+  value : f32,
   @builtin(sample_mask)
-  fixed_sample_mask : u32;
+  fixed_sample_mask : u32,
 }
 
 fn frag_main2_inner() -> f32 {
@@ -3136,7 +3136,7 @@
 
 struct tint_symbol_2 {
   @builtin(position)
-  value : vec4<f32>;
+  value : vec4<f32>,
 }
 
 fn vert_main1_inner() -> vec4<f32> {
@@ -3167,8 +3167,8 @@
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_AvoidNameClash) {
   auto* src = R"(
 struct FragOut {
-  @location(0) fixed_sample_mask : vec4<f32>;
-  @location(1) fixed_sample_mask_1 : vec4<f32>;
+  @location(0) fixed_sample_mask : vec4<f32>,
+  @location(1) fixed_sample_mask_1 : vec4<f32>,
 };
 
 @stage(fragment)
@@ -3179,17 +3179,17 @@
 
   auto* expect = R"(
 struct FragOut {
-  fixed_sample_mask : vec4<f32>;
-  fixed_sample_mask_1 : vec4<f32>;
+  fixed_sample_mask : vec4<f32>,
+  fixed_sample_mask_1 : vec4<f32>,
 }
 
 struct tint_symbol {
   @location(0)
-  fixed_sample_mask : vec4<f32>;
+  fixed_sample_mask : vec4<f32>,
   @location(1)
-  fixed_sample_mask_1 : vec4<f32>;
+  fixed_sample_mask_1 : vec4<f32>,
   @builtin(sample_mask)
-  fixed_sample_mask_2 : u32;
+  fixed_sample_mask_2 : u32,
 }
 
 fn frag_main_inner() -> FragOut {
@@ -3260,9 +3260,9 @@
   auto* expect = R"(
 struct tint_symbol {
   @builtin(position)
-  value : vec4<f32>;
+  value : vec4<f32>,
   @builtin(pointsize)
-  vertex_point_size : f32;
+  vertex_point_size : f32,
 }
 
 fn vert_main_inner() -> vec4<f32> {
@@ -3290,7 +3290,7 @@
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnStruct_Spirv) {
   auto* src = R"(
 struct VertOut {
-  @builtin(position) pos : vec4<f32>;
+  @builtin(position) pos : vec4<f32>,
 };
 
 @stage(vertex)
@@ -3305,7 +3305,7 @@
 @builtin(pointsize) @internal(disable_validation__ignore_storage_class) var<out> vertex_point_size : f32;
 
 struct VertOut {
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 fn vert_main_inner() -> VertOut {
@@ -3337,7 +3337,7 @@
 }
 
 struct VertOut {
-  @builtin(position) pos : vec4<f32>;
+  @builtin(position) pos : vec4<f32>,
 };
 )";
 
@@ -3358,7 +3358,7 @@
 }
 
 struct VertOut {
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 )";
 
@@ -3373,7 +3373,7 @@
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnStruct_Msl) {
   auto* src = R"(
 struct VertOut {
-  @builtin(position) pos : vec4<f32>;
+  @builtin(position) pos : vec4<f32>,
 };
 
 @stage(vertex)
@@ -3384,14 +3384,14 @@
 
   auto* expect = R"(
 struct VertOut {
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 struct tint_symbol {
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
   @builtin(pointsize)
-  vertex_point_size : f32;
+  vertex_point_size : f32,
 }
 
 fn vert_main_inner() -> VertOut {
@@ -3425,16 +3425,16 @@
 }
 
 struct VertOut {
-  @builtin(position) pos : vec4<f32>;
+  @builtin(position) pos : vec4<f32>,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol {
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
   @builtin(pointsize)
-  vertex_point_size : f32;
+  vertex_point_size : f32,
 }
 
 fn vert_main_inner() -> VertOut {
@@ -3451,7 +3451,7 @@
 }
 
 struct VertOut {
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 )";
 
@@ -3470,16 +3470,16 @@
 var<private> vertex_point_size_2 : f32;
 
 struct VertIn1 {
-  @location(0) collide : f32;
+  @location(0) collide : f32,
 };
 
 struct VertIn2 {
-  @location(1) collide : f32;
+  @location(1) collide : f32,
 };
 
 struct VertOut {
-  @location(0) vertex_point_size : f32;
-  @builtin(position) vertex_point_size_1 : vec4<f32>;
+  @location(0) vertex_point_size : f32,
+  @builtin(position) vertex_point_size_1 : vec4<f32>,
 };
 
 @stage(vertex)
@@ -3507,16 +3507,16 @@
 var<private> vertex_point_size_2 : f32;
 
 struct VertIn1 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertIn2 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertOut {
-  vertex_point_size : f32;
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size : f32,
+  vertex_point_size_1 : vec4<f32>,
 }
 
 fn vert_main_inner(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
@@ -3551,11 +3551,11 @@
 }
 
 struct VertIn1 {
-  @location(0) collide : f32;
+  @location(0) collide : f32,
 };
 
 struct VertIn2 {
-  @location(1) collide : f32;
+  @location(1) collide : f32,
 };
 
 var<private> vertex_point_size : f32;
@@ -3563,8 +3563,8 @@
 var<private> vertex_point_size_2 : f32;
 
 struct VertOut {
-  @location(0) vertex_point_size : f32;
-  @builtin(position) vertex_point_size_1 : vec4<f32>;
+  @location(0) vertex_point_size : f32,
+  @builtin(position) vertex_point_size_1 : vec4<f32>,
 };
 )";
 
@@ -3593,11 +3593,11 @@
 }
 
 struct VertIn1 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertIn2 {
-  collide : f32;
+  collide : f32,
 }
 
 var<private> vertex_point_size : f32;
@@ -3607,8 +3607,8 @@
 var<private> vertex_point_size_2 : f32;
 
 struct VertOut {
-  vertex_point_size : f32;
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size : f32,
+  vertex_point_size_1 : vec4<f32>,
 }
 )";
 
@@ -3623,16 +3623,16 @@
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Msl) {
   auto* src = R"(
 struct VertIn1 {
-  @location(0) collide : f32;
+  @location(0) collide : f32,
 };
 
 struct VertIn2 {
-  @location(1) collide : f32;
+  @location(1) collide : f32,
 };
 
 struct VertOut {
-  @location(0) vertex_point_size : vec4<f32>;
-  @builtin(position) vertex_point_size_1 : vec4<f32>;
+  @location(0) vertex_point_size : vec4<f32>,
+  @builtin(position) vertex_point_size_1 : vec4<f32>,
 };
 
 @stage(vertex)
@@ -3644,32 +3644,32 @@
 
   auto* expect = R"(
 struct VertIn1 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertIn2 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertOut {
-  vertex_point_size : vec4<f32>;
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size : vec4<f32>,
+  vertex_point_size_1 : vec4<f32>,
 }
 
 struct tint_symbol_1 {
   @location(0)
-  collide : f32;
+  collide : f32,
   @location(1)
-  collide_2 : f32;
+  collide_2 : f32,
 }
 
 struct tint_symbol_2 {
   @location(0)
-  vertex_point_size : vec4<f32>;
+  vertex_point_size : vec4<f32>,
   @builtin(position)
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size_1 : vec4<f32>,
   @builtin(pointsize)
-  vertex_point_size_2 : f32;
+  vertex_point_size_2 : f32,
 }
 
 fn vert_main_inner(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
@@ -3706,34 +3706,34 @@
 }
 
 struct VertIn1 {
-  @location(0) collide : f32;
+  @location(0) collide : f32,
 };
 
 struct VertIn2 {
-  @location(1) collide : f32;
+  @location(1) collide : f32,
 };
 
 struct VertOut {
-  @location(0) vertex_point_size : vec4<f32>;
-  @builtin(position) vertex_point_size_1 : vec4<f32>;
+  @location(0) vertex_point_size : vec4<f32>,
+  @builtin(position) vertex_point_size_1 : vec4<f32>,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(0)
-  collide : f32;
+  collide : f32,
   @location(1)
-  collide_2 : f32;
+  collide_2 : f32,
 }
 
 struct tint_symbol_2 {
   @location(0)
-  vertex_point_size : vec4<f32>;
+  vertex_point_size : vec4<f32>,
   @builtin(position)
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size_1 : vec4<f32>,
   @builtin(pointsize)
-  vertex_point_size_2 : f32;
+  vertex_point_size_2 : f32,
 }
 
 fn vert_main_inner(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
@@ -3752,16 +3752,16 @@
 }
 
 struct VertIn1 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertIn2 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertOut {
-  vertex_point_size : vec4<f32>;
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size : vec4<f32>,
+  vertex_point_size_1 : vec4<f32>,
 }
 )";
 
@@ -3776,16 +3776,16 @@
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Hlsl) {
   auto* src = R"(
 struct VertIn1 {
-  @location(0) collide : f32;
+  @location(0) collide : f32,
 };
 
 struct VertIn2 {
-  @location(1) collide : f32;
+  @location(1) collide : f32,
 };
 
 struct VertOut {
-  @location(0) vertex_point_size : vec4<f32>;
-  @builtin(position) vertex_point_size_1 : vec4<f32>;
+  @location(0) vertex_point_size : vec4<f32>,
+  @builtin(position) vertex_point_size_1 : vec4<f32>,
 };
 
 @stage(vertex)
@@ -3797,32 +3797,32 @@
 
   auto* expect = R"(
 struct VertIn1 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertIn2 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertOut {
-  vertex_point_size : vec4<f32>;
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size : vec4<f32>,
+  vertex_point_size_1 : vec4<f32>,
 }
 
 struct tint_symbol_1 {
   @location(0)
-  collide : f32;
+  collide : f32,
   @location(1)
-  collide_2 : f32;
+  collide_2 : f32,
 }
 
 struct tint_symbol_2 {
   @location(0)
-  vertex_point_size : vec4<f32>;
+  vertex_point_size : vec4<f32>,
   @builtin(position)
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size_1 : vec4<f32>,
   @builtin(pointsize)
-  vertex_point_size_2 : f32;
+  vertex_point_size_2 : f32,
 }
 
 fn vert_main_inner(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
@@ -3859,34 +3859,34 @@
 }
 
 struct VertIn1 {
-  @location(0) collide : f32;
+  @location(0) collide : f32,
 };
 
 struct VertIn2 {
-  @location(1) collide : f32;
+  @location(1) collide : f32,
 };
 
 struct VertOut {
-  @location(0) vertex_point_size : vec4<f32>;
-  @builtin(position) vertex_point_size_1 : vec4<f32>;
+  @location(0) vertex_point_size : vec4<f32>,
+  @builtin(position) vertex_point_size_1 : vec4<f32>,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
   @location(0)
-  collide : f32;
+  collide : f32,
   @location(1)
-  collide_2 : f32;
+  collide_2 : f32,
 }
 
 struct tint_symbol_2 {
   @location(0)
-  vertex_point_size : vec4<f32>;
+  vertex_point_size : vec4<f32>,
   @builtin(position)
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size_1 : vec4<f32>,
   @builtin(pointsize)
-  vertex_point_size_2 : f32;
+  vertex_point_size_2 : f32,
 }
 
 fn vert_main_inner(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
@@ -3905,16 +3905,16 @@
 }
 
 struct VertIn1 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertIn2 {
-  collide : f32;
+  collide : f32,
 }
 
 struct VertOut {
-  vertex_point_size : vec4<f32>;
-  vertex_point_size_1 : vec4<f32>;
+  vertex_point_size : vec4<f32>,
+  vertex_point_size_1 : vec4<f32>,
 }
 )";
 
diff --git a/src/tint/transform/decompose_memory_access_test.cc b/src/tint/transform/decompose_memory_access_test.cc
index 9d1956b..ec47d9a 100644
--- a/src/tint/transform/decompose_memory_access_test.cc
+++ b/src/tint/transform/decompose_memory_access_test.cc
@@ -31,7 +31,7 @@
 TEST_F(DecomposeMemoryAccessTest, ShouldRunStorageBuffer) {
   auto* src = R"(
 struct Buffer {
-  i : i32;
+  i : i32,
 };
 @group(0) @binding(0) var<storage, read_write> sb : Buffer;
 )";
@@ -42,7 +42,7 @@
 TEST_F(DecomposeMemoryAccessTest, ShouldRunUniformBuffer) {
   auto* src = R"(
 struct Buffer {
-  i : i32;
+  i : i32,
 };
 @group(0) @binding(0) var<uniform> ub : Buffer;
 )";
@@ -53,28 +53,28 @@
 TEST_F(DecomposeMemoryAccessTest, SB_BasicLoad) {
   auto* src = R"(
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -108,28 +108,28 @@
 
   auto* expect = R"(
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -277,28 +277,28 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 )";
 
@@ -412,28 +412,28 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 )";
 
@@ -445,28 +445,28 @@
 TEST_F(DecomposeMemoryAccessTest, UB_BasicLoad) {
   auto* src = R"(
 struct UB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 
 @group(0) @binding(0) var<uniform> ub : UB;
@@ -500,28 +500,28 @@
 
   auto* expect = R"(
 struct UB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 
 @group(0) @binding(0) var<uniform> ub : UB;
@@ -669,28 +669,28 @@
 @group(0) @binding(0) var<uniform> ub : UB;
 
 struct UB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 )";
 
@@ -804,28 +804,28 @@
 @group(0) @binding(0) var<uniform> ub : UB;
 
 struct UB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 )";
 
@@ -837,28 +837,28 @@
 TEST_F(DecomposeMemoryAccessTest, SB_BasicStore) {
   auto* src = R"(
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -892,28 +892,28 @@
 
   auto* expect = R"(
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -1078,28 +1078,28 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 )";
 
@@ -1230,28 +1230,28 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 )";
 
@@ -1263,28 +1263,28 @@
 TEST_F(DecomposeMemoryAccessTest, LoadStructure) {
   auto* src = R"(
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -1297,28 +1297,28 @@
 
   auto* expect = R"(
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -1428,28 +1428,28 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 )";
 
@@ -1546,28 +1546,28 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 )";
 
@@ -1579,28 +1579,28 @@
 TEST_F(DecomposeMemoryAccessTest, StoreStructure) {
   auto* src = R"(
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -1613,28 +1613,28 @@
 
   auto* expect = R"(
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -1782,28 +1782,28 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 };
 )";
 
@@ -1938,28 +1938,28 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  a : i32;
-  b : u32;
-  c : f32;
-  d : vec2<i32>;
-  e : vec2<u32>;
-  f : vec2<f32>;
-  g : vec3<i32>;
-  h : vec3<u32>;
-  i : vec3<f32>;
-  j : vec4<i32>;
-  k : vec4<u32>;
-  l : vec4<f32>;
-  m : mat2x2<f32>;
-  n : mat2x3<f32>;
-  o : mat2x4<f32>;
-  p : mat3x2<f32>;
-  q : mat3x3<f32>;
-  r : mat3x4<f32>;
-  s : mat4x2<f32>;
-  t : mat4x3<f32>;
-  u : mat4x4<f32>;
-  v : array<vec3<f32>, 2>;
+  a : i32,
+  b : u32,
+  c : f32,
+  d : vec2<i32>,
+  e : vec2<u32>,
+  f : vec2<f32>,
+  g : vec3<i32>,
+  h : vec3<u32>,
+  i : vec3<f32>,
+  j : vec4<i32>,
+  k : vec4<u32>,
+  l : vec4<f32>,
+  m : mat2x2<f32>,
+  n : mat2x3<f32>,
+  o : mat2x4<f32>,
+  p : mat3x2<f32>,
+  q : mat3x3<f32>,
+  r : mat3x4<f32>,
+  s : mat4x2<f32>,
+  t : mat4x3<f32>,
+  u : mat4x4<f32>,
+  v : array<vec3<f32>, 2>,
 }
 )";
 
@@ -1973,23 +1973,23 @@
 // sizeof(S1) == 32
 // alignof(S1) == 16
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 };
 
 // sizeof(S2) == 116
 // alignof(S2) == 16
 struct S2 {
-  a : i32;
-  b : array<S1, 3>;
-  c : i32;
+  a : i32,
+  b : array<S1, 3>,
+  c : i32,
 };
 
 struct SB {
   @size(128)
-  a : i32;
-  b : array<S2>;
+  a : i32,
+  b : array<S2>,
 };
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -2009,21 +2009,21 @@
 
   auto* expect = R"(
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 }
 
 struct S2 {
-  a : i32;
-  b : array<S1, 3>;
-  c : i32;
+  a : i32,
+  b : array<S1, 3>,
+  c : i32,
 }
 
 struct SB {
   @size(128)
-  a : i32;
-  b : array<S2>;
+  a : i32,
+  b : array<S2>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -2053,20 +2053,20 @@
 
 struct SB {
   @size(128)
-  a : i32;
-  b : array<S2>;
+  a : i32,
+  b : array<S2>,
 };
 
 struct S2 {
-  a : i32;
-  b : array<S1, 3>;
-  c : i32;
+  a : i32,
+  b : array<S1, 3>,
+  c : i32,
 };
 
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 };
 )";
 
@@ -2090,20 +2090,20 @@
 
 struct SB {
   @size(128)
-  a : i32;
-  b : array<S2>;
+  a : i32,
+  b : array<S2>,
 }
 
 struct S2 {
-  a : i32;
-  b : array<S1, 3>;
-  c : i32;
+  a : i32,
+  b : array<S1, 3>,
+  c : i32,
 }
 
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 }
 )";
 
@@ -2115,21 +2115,21 @@
 TEST_F(DecomposeMemoryAccessTest, ComplexDynamicAccessChain) {
   auto* src = R"(
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 };
 
 struct S2 {
-  a : i32;
-  b : array<S1, 3>;
-  c : i32;
+  a : i32,
+  b : array<S1, 3>,
+  c : i32,
 };
 
 struct SB {
   @size(128)
-  a : i32;
-  b : array<S2>;
+  a : i32,
+  b : array<S2>,
 };
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -2145,21 +2145,21 @@
 
   auto* expect = R"(
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 }
 
 struct S2 {
-  a : i32;
-  b : array<S1, 3>;
-  c : i32;
+  a : i32,
+  b : array<S1, 3>,
+  c : i32,
 }
 
 struct SB {
   @size(128)
-  a : i32;
-  b : array<S2>;
+  a : i32,
+  b : array<S2>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -2195,20 +2195,20 @@
 
 struct SB {
   @size(128)
-  a : i32;
-  b :array<S2>;
+  a : i32,
+  b : array<S2>
 };
 
 struct S2 {
-  a : i32;
-  b : array<S1, 3>;
-  c : i32;
+  a : i32,
+  b : array<S1, 3>,
+  c : i32,
 };
 
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 };
 )";
 
@@ -2228,20 +2228,20 @@
 
 struct SB {
   @size(128)
-  a : i32;
-  b : array<S2>;
+  a : i32,
+  b : array<S2>,
 }
 
 struct S2 {
-  a : i32;
-  b : array<S1, 3>;
-  c : i32;
+  a : i32,
+  b : array<S1, 3>,
+  c : i32,
 }
 
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 }
 )";
 
@@ -2253,9 +2253,9 @@
 TEST_F(DecomposeMemoryAccessTest, ComplexDynamicAccessChainWithAliases) {
   auto* src = R"(
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 };
 
 type A1 = S1;
@@ -2263,9 +2263,9 @@
 type A1_Array = array<S1, 3>;
 
 struct S2 {
-  a : i32;
-  b : A1_Array;
-  c : i32;
+  a : i32,
+  b : A1_Array,
+  c : i32,
 };
 
 type A2 = S2;
@@ -2274,8 +2274,8 @@
 
 struct SB {
   @size(128)
-  a : i32;
-  b : A2_Array;
+  a : i32,
+  b : A2_Array,
 };
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -2291,9 +2291,9 @@
 
   auto* expect = R"(
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 }
 
 type A1 = S1;
@@ -2301,9 +2301,9 @@
 type A1_Array = array<S1, 3>;
 
 struct S2 {
-  a : i32;
-  b : A1_Array;
-  c : i32;
+  a : i32,
+  b : A1_Array,
+  c : i32,
 }
 
 type A2 = S2;
@@ -2312,8 +2312,8 @@
 
 struct SB {
   @size(128)
-  a : i32;
-  b : A2_Array;
+  a : i32,
+  b : A2_Array,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -2350,8 +2350,8 @@
 
 struct SB {
   @size(128)
-  a : i32;
-  b : A2_Array;
+  a : i32,
+  b : A2_Array,
 };
 
 type A2_Array = array<S2>;
@@ -2359,9 +2359,9 @@
 type A2 = S2;
 
 struct S2 {
-  a : i32;
-  b : A1_Array;
-  c : i32;
+  a : i32,
+  b : A1_Array,
+  c : i32,
 };
 
 type A1 = S1;
@@ -2369,9 +2369,9 @@
 type A1_Array = array<S1, 3>;
 
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 };
 )";
 
@@ -2391,8 +2391,8 @@
 
 struct SB {
   @size(128)
-  a : i32;
-  b : A2_Array;
+  a : i32,
+  b : A2_Array,
 }
 
 type A2_Array = array<S2>;
@@ -2400,9 +2400,9 @@
 type A2 = S2;
 
 struct S2 {
-  a : i32;
-  b : A1_Array;
-  c : i32;
+  a : i32,
+  b : A1_Array,
+  c : i32,
 }
 
 type A1 = S1;
@@ -2410,9 +2410,9 @@
 type A1_Array = array<S1, 3>;
 
 struct S1 {
-  a : i32;
-  b : vec3<f32>;
-  c : i32;
+  a : i32,
+  b : vec3<f32>,
+  c : i32,
 }
 )";
 
@@ -2424,9 +2424,9 @@
 TEST_F(DecomposeMemoryAccessTest, StorageBufferAtomics) {
   auto* src = R"(
 struct SB {
-  padding : vec4<f32>;
-  a : atomic<i32>;
-  b : atomic<u32>;
+  padding : vec4<f32>,
+  a : atomic<i32>,
+  b : atomic<u32>,
 };
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -2461,9 +2461,9 @@
 
   auto* expect = R"(
 struct SB {
-  padding : vec4<f32>;
-  a : atomic<i32>;
-  b : atomic<u32>;
+  padding : vec4<f32>,
+  a : atomic<i32>,
+  b : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -2598,9 +2598,9 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  padding : vec4<f32>;
-  a : atomic<i32>;
-  b : atomic<u32>;
+  padding : vec4<f32>,
+  a : atomic<i32>,
+  b : atomic<u32>,
 };
 )";
 
@@ -2700,9 +2700,9 @@
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
 struct SB {
-  padding : vec4<f32>;
-  a : atomic<i32>;
-  b : atomic<u32>;
+  padding : vec4<f32>,
+  a : atomic<i32>,
+  b : atomic<u32>,
 }
 )";
 
@@ -2714,9 +2714,9 @@
 TEST_F(DecomposeMemoryAccessTest, WorkgroupBufferAtomics) {
   auto* src = R"(
 struct S {
-  padding : vec4<f32>;
-  a : atomic<i32>;
-  b : atomic<u32>;
+  padding : vec4<f32>,
+  a : atomic<i32>,
+  b : atomic<u32>,
 }
 
 var<workgroup> w : S;
@@ -2786,9 +2786,9 @@
 var<workgroup> w : S;
 
 struct S {
-  padding : vec4<f32>;
-  a : atomic<i32>;
-  b : atomic<u32>;
+  padding : vec4<f32>,
+  a : atomic<i32>,
+  b : atomic<u32>,
 }
 )";
 
diff --git a/src/tint/transform/decompose_strided_array_test.cc b/src/tint/transform/decompose_strided_array_test.cc
index 0fbbd8e..63c7823 100644
--- a/src/tint/transform/decompose_strided_array_test.cc
+++ b/src/tint/transform/decompose_strided_array_test.cc
@@ -129,7 +129,7 @@
   auto* expect = R"(
 struct strided_arr {
   @size(32)
-  el : f32;
+  el : f32,
 }
 
 var<private> arr : array<strided_arr, 4>;
@@ -149,7 +149,7 @@
 
 TEST_F(DecomposeStridedArrayTest, ReadUniformStridedArray) {
   // struct S {
-  //   a : @stride(32) array<f32, 4>;
+  //   a : @stride(32) array<f32, 4>,
   // };
   // @group(0) @binding(0) var<uniform> s : S;
   //
@@ -177,11 +177,11 @@
   auto* expect = R"(
 struct strided_arr {
   @size(32)
-  el : f32;
+  el : f32,
 }
 
 struct S {
-  a : array<strided_arr, 4>;
+  a : array<strided_arr, 4>,
 }
 
 @group(0) @binding(0) var<uniform> s : S;
@@ -201,7 +201,7 @@
 
 TEST_F(DecomposeStridedArrayTest, ReadUniformDefaultStridedArray) {
   // struct S {
-  //   a : @stride(16) array<vec4<f32>, 4>;
+  //   a : @stride(16) array<vec4<f32>, 4>,
   // };
   // @group(0) @binding(0) var<uniform> s : S;
   //
@@ -232,7 +232,7 @@
   auto* expect =
       R"(
 struct S {
-  a : array<vec4<f32>, 4>;
+  a : array<vec4<f32>, 4>,
 }
 
 @group(0) @binding(0) var<uniform> s : S;
@@ -252,7 +252,7 @@
 
 TEST_F(DecomposeStridedArrayTest, ReadStorageStridedArray) {
   // struct S {
-  //   a : @stride(32) array<f32, 4>;
+  //   a : @stride(32) array<f32, 4>,
   // };
   // @group(0) @binding(0) var<storage> s : S;
   //
@@ -280,11 +280,11 @@
   auto* expect = R"(
 struct strided_arr {
   @size(32)
-  el : f32;
+  el : f32,
 }
 
 struct S {
-  a : array<strided_arr, 4>;
+  a : array<strided_arr, 4>,
 }
 
 @group(0) @binding(0) var<storage> s : S;
@@ -304,7 +304,7 @@
 
 TEST_F(DecomposeStridedArrayTest, ReadStorageDefaultStridedArray) {
   // struct S {
-  //   a : @stride(4) array<f32, 4>;
+  //   a : @stride(4) array<f32, 4>,
   // };
   // @group(0) @binding(0) var<storage> s : S;
   //
@@ -331,7 +331,7 @@
 
   auto* expect = R"(
 struct S {
-  a : array<f32, 4>;
+  a : array<f32, 4>,
 }
 
 @group(0) @binding(0) var<storage> s : S;
@@ -351,7 +351,7 @@
 
 TEST_F(DecomposeStridedArrayTest, WriteStorageStridedArray) {
   // struct S {
-  //   a : @stride(32) array<f32, 4>;
+  //   a : @stride(32) array<f32, 4>,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -383,11 +383,11 @@
       R"(
 struct strided_arr {
   @size(32)
-  el : f32;
+  el : f32,
 }
 
 struct S {
-  a : array<strided_arr, 4>;
+  a : array<strided_arr, 4>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -408,7 +408,7 @@
 
 TEST_F(DecomposeStridedArrayTest, WriteStorageDefaultStridedArray) {
   // struct S {
-  //   a : @stride(4) array<f32, 4>;
+  //   a : @stride(4) array<f32, 4>,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -439,7 +439,7 @@
   auto* expect =
       R"(
 struct S {
-  a : array<f32, 4>;
+  a : array<f32, 4>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -460,7 +460,7 @@
 
 TEST_F(DecomposeStridedArrayTest, ReadWriteViaPointerLets) {
   // struct S {
-  //   a : @stride(32) array<f32, 4>;
+  //   a : @stride(32) array<f32, 4>,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -498,11 +498,11 @@
       R"(
 struct strided_arr {
   @size(32)
-  el : f32;
+  el : f32,
 }
 
 struct S {
-  a : array<strided_arr, 4>;
+  a : array<strided_arr, 4>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -525,7 +525,7 @@
 TEST_F(DecomposeStridedArrayTest, PrivateAliasedStridedArray) {
   // type ARR = @stride(32) array<f32, 4>;
   // struct S {
-  //   a : ARR;
+  //   a : ARR,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -563,13 +563,13 @@
   auto* expect = R"(
 struct strided_arr {
   @size(32)
-  el : f32;
+  el : f32,
 }
 
 type ARR = array<strided_arr, 4>;
 
 struct S {
-  a : ARR;
+  a : ARR,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -594,7 +594,7 @@
   // type ARR_A = @stride(8) array<f32, 2>;
   // type ARR_B = @stride(128) array<@stride(16) array<ARR_A, 3>, 4>;
   // struct S {
-  //   a : ARR_B;
+  //   a : ARR_B,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -659,20 +659,20 @@
       R"(
 struct strided_arr {
   @size(8)
-  el : f32;
+  el : f32,
 }
 
 type ARR_A = array<strided_arr, 2>;
 
 struct strided_arr_1 {
   @size(128)
-  el : array<ARR_A, 3>;
+  el : array<ARR_A, 3>,
 }
 
 type ARR_B = array<strided_arr_1, 4>;
 
 struct S {
-  a : ARR_B;
+  a : ARR_B,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
diff --git a/src/tint/transform/decompose_strided_matrix_test.cc b/src/tint/transform/decompose_strided_matrix_test.cc
index b2098bb..4fe08a0 100644
--- a/src/tint/transform/decompose_strided_matrix_test.cc
+++ b/src/tint/transform/decompose_strided_matrix_test.cc
@@ -58,7 +58,7 @@
   // struct S {
   //   @offset(16) @stride(32)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // @group(0) @binding(0) var<uniform> s : S;
   //
@@ -93,8 +93,8 @@
   auto* expect = R"(
 struct S {
   @size(16)
-  padding : u32;
-  m : @stride(32) array<vec2<f32>, 2u>;
+  padding : u32,
+  m : @stride(32) array<vec2<f32>, 2u>,
 }
 
 @group(0) @binding(0) var<uniform> s : S;
@@ -119,7 +119,7 @@
   // struct S {
   //   @offset(16) @stride(32)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // @group(0) @binding(0) var<uniform> s : S;
   //
@@ -154,8 +154,8 @@
   auto* expect = R"(
 struct S {
   @size(16)
-  padding : u32;
-  m : @stride(32) array<vec2<f32>, 2u>;
+  padding : u32,
+  m : @stride(32) array<vec2<f32>, 2u>,
 }
 
 @group(0) @binding(0) var<uniform> s : S;
@@ -176,7 +176,7 @@
   // struct S {
   //   @offset(16) @stride(8)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // @group(0) @binding(0) var<uniform> s : S;
   //
@@ -211,9 +211,9 @@
   auto* expect = R"(
 struct S {
   @size(16)
-  padding : u32;
+  padding : u32,
   @stride(8) @internal(disable_validation__ignore_stride)
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> s : S;
@@ -234,7 +234,7 @@
   // struct S {
   //   @offset(8) @stride(32)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -269,8 +269,8 @@
   auto* expect = R"(
 struct S {
   @size(8)
-  padding : u32;
-  m : @stride(32) array<vec2<f32>, 2u>;
+  padding : u32,
+  m : @stride(32) array<vec2<f32>, 2u>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -295,7 +295,7 @@
   // struct S {
   //   @offset(16) @stride(32)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -330,8 +330,8 @@
   auto* expect = R"(
 struct S {
   @size(16)
-  padding : u32;
-  m : @stride(32) array<vec2<f32>, 2u>;
+  padding : u32,
+  m : @stride(32) array<vec2<f32>, 2u>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -352,7 +352,7 @@
   // struct S {
   //   @offset(8) @stride(32)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -388,8 +388,8 @@
   auto* expect = R"(
 struct S {
   @size(8)
-  padding : u32;
-  m : @stride(32) array<vec2<f32>, 2u>;
+  padding : u32,
+  m : @stride(32) array<vec2<f32>, 2u>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -414,7 +414,7 @@
   // struct S {
   //   @offset(8) @stride(32)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -449,8 +449,8 @@
   auto* expect = R"(
 struct S {
   @size(8)
-  padding : u32;
-  m : @stride(32) array<vec2<f32>, 2u>;
+  padding : u32,
+  m : @stride(32) array<vec2<f32>, 2u>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -471,7 +471,7 @@
   // struct S {
   //   @offset(8) @stride(32)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // @group(0) @binding(0) var<storage, read_write> s : S;
   //
@@ -521,8 +521,8 @@
   auto* expect = R"(
 struct S {
   @size(8)
-  padding : u32;
-  m : @stride(32) array<vec2<f32>, 2u>;
+  padding : u32,
+  m : @stride(32) array<vec2<f32>, 2u>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -555,7 +555,7 @@
   // struct S {
   //   @offset(8) @stride(32)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // var<private> s : S;
   //
@@ -589,9 +589,9 @@
   auto* expect = R"(
 struct S {
   @size(8)
-  padding : u32;
+  padding : u32,
   @stride(32) @internal(disable_validation__ignore_stride)
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 }
 
 var<private> s : S;
@@ -612,7 +612,7 @@
   // struct S {
   //   @offset(8) @stride(32)
   //   @internal(ignore_stride_attribute)
-  //   m : mat2x2<f32>;
+  //   m : mat2x2<f32>,
   // };
   // var<private> s : S;
   //
@@ -647,9 +647,9 @@
   auto* expect = R"(
 struct S {
   @size(8)
-  padding : u32;
+  padding : u32,
   @stride(32) @internal(disable_validation__ignore_stride)
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 }
 
 var<private> s : S;
diff --git a/src/tint/transform/first_index_offset_test.cc b/src/tint/transform/first_index_offset_test.cc
index 9de9880..00822ff 100644
--- a/src/tint/transform/first_index_offset_test.cc
+++ b/src/tint/transform/first_index_offset_test.cc
@@ -108,7 +108,7 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_vertex_index : u32;
+  first_vertex_index : u32,
 }
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
@@ -154,7 +154,7 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_vertex_index : u32;
+  first_vertex_index : u32,
 }
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
@@ -200,7 +200,7 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_instance_index : u32;
+  first_instance_index : u32,
 }
 
 @binding(1) @group(7) var<uniform> tint_symbol_1 : tint_symbol;
@@ -246,7 +246,7 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_instance_index : u32;
+  first_instance_index : u32,
 }
 
 @binding(1) @group(7) var<uniform> tint_symbol_1 : tint_symbol;
@@ -284,8 +284,8 @@
 }
 
 struct Inputs {
-  @builtin(instance_index) instance_idx : u32;
-  @builtin(vertex_index) vert_idx : u32;
+  @builtin(instance_index) instance_idx : u32,
+  @builtin(vertex_index) vert_idx : u32,
 };
 
 @stage(vertex)
@@ -297,8 +297,8 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_vertex_index : u32;
-  first_instance_index : u32;
+  first_vertex_index : u32,
+  first_instance_index : u32,
 }
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
@@ -309,9 +309,9 @@
 
 struct Inputs {
   @builtin(instance_index)
-  instance_idx : u32;
+  instance_idx : u32,
   @builtin(vertex_index)
-  vert_idx : u32;
+  vert_idx : u32,
 }
 
 @stage(vertex)
@@ -345,8 +345,8 @@
 }
 
 struct Inputs {
-  @builtin(instance_index) instance_idx : u32;
-  @builtin(vertex_index) vert_idx : u32;
+  @builtin(instance_index) instance_idx : u32,
+  @builtin(vertex_index) vert_idx : u32,
 };
 
 fn test(instance_idx : u32, vert_idx : u32) -> u32 {
@@ -356,8 +356,8 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_vertex_index : u32;
-  first_instance_index : u32;
+  first_vertex_index : u32,
+  first_instance_index : u32,
 }
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
@@ -370,9 +370,9 @@
 
 struct Inputs {
   @builtin(instance_index)
-  instance_idx : u32;
+  instance_idx : u32,
   @builtin(vertex_index)
-  vert_idx : u32;
+  vert_idx : u32,
 }
 
 fn test(instance_idx : u32, vert_idx : u32) -> u32 {
@@ -414,7 +414,7 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_vertex_index : u32;
+  first_vertex_index : u32,
 }
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
@@ -468,7 +468,7 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_vertex_index : u32;
+  first_vertex_index : u32,
 }
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
@@ -530,8 +530,8 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_vertex_index : u32;
-  first_instance_index : u32;
+  first_vertex_index : u32,
+  first_instance_index : u32,
 }
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
@@ -601,8 +601,8 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  first_vertex_index : u32;
-  first_instance_index : u32;
+  first_vertex_index : u32,
+  first_instance_index : u32,
 }
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
diff --git a/src/tint/transform/localize_struct_array_assignment_test.cc b/src/tint/transform/localize_struct_array_assignment_test.cc
index e16304a..2c75f76 100644
--- a/src/tint/transform/localize_struct_array_assignment_test.cc
+++ b/src/tint/transform/localize_struct_array_assignment_test.cc
@@ -35,15 +35,15 @@
 TEST_F(LocalizeStructArrayAssignmentTest, StructArray) {
   auto* src = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 };
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -58,15 +58,15 @@
 
   auto* expect = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -101,15 +101,15 @@
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 
 struct Uniforms {
-  i : u32;
+  i : u32,
 };
 )";
 
@@ -129,15 +129,15 @@
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 )";
 
@@ -149,19 +149,19 @@
 TEST_F(LocalizeStructArrayAssignmentTest, StructStructArray) {
   auto* src = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 
 struct S1 {
-  a : array<InnerS, 8>;
+  a : array<InnerS, 8>,
 };
 
 struct OuterS {
-  s2 : S1;
+  s2 : S1,
 };
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -176,19 +176,19 @@
 
   auto* expect = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct S1 {
-  a : array<InnerS, 8>;
+  a : array<InnerS, 8>,
 }
 
 struct OuterS {
-  s2 : S1;
+  s2 : S1,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -223,19 +223,19 @@
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 struct OuterS {
-  s2 : S1;
+  s2 : S1,
 };
 
 struct S1 {
-  a : array<InnerS, 8>;
+  a : array<InnerS, 8>,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 
 struct Uniforms {
-  i : u32;
+  i : u32,
 };
 )";
 
@@ -255,19 +255,19 @@
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 struct OuterS {
-  s2 : S1;
+  s2 : S1,
 }
 
 struct S1 {
-  a : array<InnerS, 8>;
+  a : array<InnerS, 8>,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 )";
 
@@ -279,16 +279,16 @@
 TEST_F(LocalizeStructArrayAssignmentTest, StructArrayArray) {
   auto* src = R"(
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 
 struct OuterS {
-  a1 : array<array<InnerS, 8>, 8>;
+  a1 : array<array<InnerS, 8>, 8>,
 };
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -303,16 +303,16 @@
 
   auto* expect = R"(
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<array<InnerS, 8>, 8>;
+  a1 : array<array<InnerS, 8>, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -338,19 +338,19 @@
 TEST_F(LocalizeStructArrayAssignmentTest, StructArrayStruct) {
   auto* src = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 
 struct S1 {
-  s2 : InnerS;
+  s2 : InnerS,
 };
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 };
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -365,19 +365,19 @@
 
   auto* expect = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct S1 {
-  s2 : InnerS;
+  s2 : InnerS,
 }
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -403,20 +403,20 @@
 TEST_F(LocalizeStructArrayAssignmentTest, StructArrayStructArray) {
   auto* src = R"(
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 
 struct S1 {
-  a2 : array<InnerS, 8>;
+  a2 : array<InnerS, 8>,
 };
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 };
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -431,20 +431,20 @@
 
   auto* expect = R"(
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct S1 {
-  a2 : array<InnerS, 8>;
+  a2 : array<InnerS, 8>,
 }
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -473,20 +473,20 @@
 TEST_F(LocalizeStructArrayAssignmentTest, IndexingWithSideEffectFunc) {
   auto* src = R"(
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 
 struct S1 {
-  a2 : array<InnerS, 8>;
+  a2 : array<InnerS, 8>,
 };
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 };
 
 var<private> nextIndex : u32;
@@ -507,20 +507,20 @@
 
   auto* expect = R"(
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct S1 {
-  a2 : array<InnerS, 8>;
+  a2 : array<InnerS, 8>,
 }
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 }
 
 var<private> nextIndex : u32;
@@ -566,8 +566,8 @@
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 };
 
 var<private> nextIndex : u32;
@@ -577,15 +577,15 @@
 }
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 };
 
 struct S1 {
-  a2 : array<InnerS, 8>;
+  a2 : array<InnerS, 8>,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 )";
 
@@ -608,8 +608,8 @@
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 var<private> nextIndex : u32;
@@ -620,15 +620,15 @@
 }
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 }
 
 struct S1 {
-  a2 : array<InnerS, 8>;
+  a2 : array<InnerS, 8>,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 )";
 
@@ -640,13 +640,13 @@
 TEST_F(LocalizeStructArrayAssignmentTest, ViaPointerArg) {
   auto* src = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 };
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 };
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
@@ -664,15 +664,15 @@
 
   auto* expect = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -713,16 +713,16 @@
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 };
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 struct Uniforms {
-  i : u32;
+  i : u32,
 };
 )";
 
@@ -744,17 +744,17 @@
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 )";
 
@@ -766,15 +766,15 @@
 TEST_F(LocalizeStructArrayAssignmentTest, ViaPointerVar) {
   auto* src = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 };
 
 struct InnerS {
-  v : i32;
+  v : i32,
 };
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 };
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -794,15 +794,15 @@
 
   auto* expect = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
@@ -833,11 +833,11 @@
 TEST_F(LocalizeStructArrayAssignmentTest, VectorAssignment) {
   auto* src = R"(
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct OuterS {
-  a1 : array<u32, 8>;
+  a1 : array<u32, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/src/tint/transform/module_scope_var_to_entry_point_param_test.cc b/src/tint/transform/module_scope_var_to_entry_point_param_test.cc
index 341ef99..3997d9a 100644
--- a/src/tint/transform/module_scope_var_to_entry_point_param_test.cc
+++ b/src/tint/transform/module_scope_var_to_entry_point_param_test.cc
@@ -387,7 +387,7 @@
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_Basic) {
   auto* src = R"(
 struct S {
-  a : f32;
+  a : f32,
 };
 
 @group(0) @binding(0)
@@ -404,7 +404,7 @@
 
   auto* expect = R"(
 struct S {
-  a : f32;
+  a : f32,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -431,7 +431,7 @@
 @group(0) @binding(1) var<storage> s : S;
 
 struct S {
-  a : f32;
+  a : f32,
 };
 
 )";
@@ -444,7 +444,7 @@
 }
 
 struct S {
-  a : f32;
+  a : f32,
 }
 )";
 
@@ -466,7 +466,7 @@
 
   auto* expect = R"(
 struct tint_symbol_1 {
-  arr : array<f32>;
+  arr : array<f32>,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -493,7 +493,7 @@
 
   auto* expect = R"(
 struct tint_symbol_1 {
-  arr : array<f32>;
+  arr : array<f32>,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -524,7 +524,7 @@
 
   auto* expect = R"(
 struct tint_symbol_2 {
-  arr : array<f32>;
+  arr : array<f32>,
 }
 
 fn foo(@internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol : ptr<storage, array<f32>>) {
@@ -559,7 +559,7 @@
 
   auto* expect = R"(
 struct tint_symbol_1 {
-  arr : array<f32>;
+  arr : array<f32>,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -592,7 +592,7 @@
 
   auto* expect = R"(
 struct tint_symbol_1 {
-  arr : array<f32>;
+  arr : array<f32>,
 }
 
 type myarray = array<f32>;
@@ -623,7 +623,7 @@
 
   auto* expect = R"(
 struct tint_symbol_1 {
-  arr : array<f32>;
+  arr : array<f32>,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -642,7 +642,7 @@
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffer_ArrayOfStruct) {
   auto* src = R"(
 struct S {
-  f : f32;
+  f : f32,
 };
 
 @group(0) @binding(0)
@@ -656,11 +656,11 @@
 
   auto* expect = R"(
 struct S {
-  f : f32;
+  f : f32,
 }
 
 struct tint_symbol_1 {
-  arr : array<S>;
+  arr : array<S>,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -684,17 +684,17 @@
 @group(0) @binding(0) var<storage> buffer : array<S>;
 
 struct S {
-  f : f32;
+  f : f32,
 };
 )";
 
   auto* expect = R"(
 struct S {
-  f : f32;
+  f : f32,
 }
 
 struct tint_symbol_1 {
-  arr : array<S>;
+  arr : array<S>,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -711,7 +711,7 @@
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_FunctionCalls) {
   auto* src = R"(
 struct S {
-  a : f32;
+  a : f32,
 };
 
 @group(0) @binding(0)
@@ -742,7 +742,7 @@
 
   auto* expect = R"(
 struct S {
-  a : f32;
+  a : f32,
 }
 
 fn no_uses() {
@@ -794,7 +794,7 @@
 }
 
 struct S {
-  a : f32;
+  a : f32,
 };
 
 @group(0) @binding(0)
@@ -825,7 +825,7 @@
 }
 
 struct S {
-  a : f32;
+  a : f32,
 }
 )";
 
@@ -978,7 +978,7 @@
 
   auto* expect = R"(
 struct tint_symbol_2 {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -996,10 +996,10 @@
 TEST_F(ModuleScopeVarToEntryPointParamTest, NestedMatrix) {
   auto* src = R"(
 struct S1 {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 };
 struct S2 {
-  s : S1;
+  s : S1,
 };
 var<workgroup> m : array<S2, 4>;
 
@@ -1011,15 +1011,15 @@
 
   auto* expect = R"(
 struct S1 {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 }
 
 struct S2 {
-  s : S1;
+  s : S1,
 }
 
 struct tint_symbol_2 {
-  m : array<S2, 4u>;
+  m : array<S2, 4u>,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -1039,7 +1039,7 @@
 TEST_F(ModuleScopeVarToEntryPointParamTest, DuplicateThreadgroupArgumentTypes) {
   auto* src = R"(
 struct S {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 };
 
 var<workgroup> a : S;
@@ -1055,12 +1055,12 @@
 
   auto* expect = R"(
 struct S {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 }
 
 struct tint_symbol_3 {
-  a : S;
-  b : S;
+  a : S,
+  b : S,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -1092,18 +1092,18 @@
 var<workgroup> b : S;
 
 struct S {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 };
 )";
 
   auto* expect = R"(
 struct S {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 }
 
 struct tint_symbol_3 {
-  a : S;
-  b : S;
+  a : S,
+  b : S,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -1123,7 +1123,7 @@
 TEST_F(ModuleScopeVarToEntryPointParamTest, UnusedVariables) {
   auto* src = R"(
 struct S {
-  a : f32;
+  a : f32,
 };
 
 var<private> p : f32;
@@ -1144,7 +1144,7 @@
 
   auto* expect = R"(
 struct S {
-  a : f32;
+  a : f32,
 }
 
 @stage(compute) @workgroup_size(1)
diff --git a/src/tint/transform/multiplanar_external_texture_test.cc b/src/tint/transform/multiplanar_external_texture_test.cc
index 0a322ef..85150a6 100644
--- a/src/tint/transform/multiplanar_external_texture_test.cc
+++ b/src/tint/transform/multiplanar_external_texture_test.cc
@@ -108,11 +108,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
@@ -151,11 +151,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
@@ -193,11 +193,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -249,11 +249,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -304,11 +304,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
@@ -357,11 +357,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
@@ -412,11 +412,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -483,11 +483,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -556,11 +556,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(4) var ext_tex_plane_1 : texture_2d<f32>;
@@ -640,11 +640,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -707,11 +707,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -773,11 +773,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -841,11 +841,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(3) var ext_tex_plane_1 : texture_2d<f32>;
@@ -919,11 +919,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(3) var ext_tex_plane_1 : texture_2d<f32>;
@@ -997,11 +997,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1072,11 +1072,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1135,11 +1135,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 fn f(ext_tex : texture_2d<f32>, ext_tex_plane_1 : texture_2d<f32>, ext_tex_params : ExternalTextureParams) -> vec2<i32> {
@@ -1174,11 +1174,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1243,11 +1243,11 @@
 
   auto* expect = R"(
 struct ExternalTextureParams {
-  numPlanes : u32;
-  vr : f32;
-  ug : f32;
-  vg : f32;
-  ub : f32;
+  numPlanes : u32,
+  vr : f32,
+  ug : f32,
+  vg : f32,
+  ub : f32,
 }
 
 @group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
diff --git a/src/tint/transform/num_workgroups_from_uniform_test.cc b/src/tint/transform/num_workgroups_from_uniform_test.cc
index a728b53..6290d0b 100644
--- a/src/tint/transform/num_workgroups_from_uniform_test.cc
+++ b/src/tint/transform/num_workgroups_from_uniform_test.cc
@@ -74,7 +74,7 @@
 
   auto* expect = R"(
 struct tint_symbol_2 {
-  num_workgroups : vec3<u32>;
+  num_workgroups : vec3<u32>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
@@ -103,7 +103,7 @@
 TEST_F(NumWorkgroupsFromUniformTest, StructOnlyMember) {
   auto* src = R"(
 struct Builtins {
-  @builtin(num_workgroups) num_wgs : vec3<u32>;
+  @builtin(num_workgroups) num_wgs : vec3<u32>,
 };
 
 @stage(compute) @workgroup_size(1)
@@ -116,13 +116,13 @@
 
   auto* expect = R"(
 struct tint_symbol_2 {
-  num_workgroups : vec3<u32>;
+  num_workgroups : vec3<u32>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
 
 struct Builtins {
-  num_wgs : vec3<u32>;
+  num_wgs : vec3<u32>,
 }
 
 fn main_inner(in : Builtins) {
@@ -156,13 +156,13 @@
 }
 
 struct Builtins {
-  @builtin(num_workgroups) num_wgs : vec3<u32>;
+  @builtin(num_workgroups) num_wgs : vec3<u32>,
 };
 )";
 
   auto* expect = R"(
 struct tint_symbol_2 {
-  num_workgroups : vec3<u32>;
+  num_workgroups : vec3<u32>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
@@ -179,7 +179,7 @@
 }
 
 struct Builtins {
-  num_wgs : vec3<u32>;
+  num_wgs : vec3<u32>,
 }
 )";
 
@@ -195,9 +195,9 @@
 TEST_F(NumWorkgroupsFromUniformTest, StructMultipleMembers) {
   auto* src = R"(
 struct Builtins {
-  @builtin(global_invocation_id) gid : vec3<u32>;
-  @builtin(num_workgroups) num_wgs : vec3<u32>;
-  @builtin(workgroup_id) wgid : vec3<u32>;
+  @builtin(global_invocation_id) gid : vec3<u32>,
+  @builtin(num_workgroups) num_wgs : vec3<u32>,
+  @builtin(workgroup_id) wgid : vec3<u32>,
 };
 
 @stage(compute) @workgroup_size(1)
@@ -210,22 +210,22 @@
 
   auto* expect = R"(
 struct tint_symbol_2 {
-  num_workgroups : vec3<u32>;
+  num_workgroups : vec3<u32>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
 
 struct Builtins {
-  gid : vec3<u32>;
-  num_wgs : vec3<u32>;
-  wgid : vec3<u32>;
+  gid : vec3<u32>,
+  num_wgs : vec3<u32>,
+  wgid : vec3<u32>,
 }
 
 struct tint_symbol_1 {
   @builtin(global_invocation_id)
-  gid : vec3<u32>;
+  gid : vec3<u32>,
   @builtin(workgroup_id)
-  wgid : vec3<u32>;
+  wgid : vec3<u32>,
 }
 
 fn main_inner(in : Builtins) {
@@ -259,25 +259,25 @@
 }
 
 struct Builtins {
-  @builtin(global_invocation_id) gid : vec3<u32>;
-  @builtin(num_workgroups) num_wgs : vec3<u32>;
-  @builtin(workgroup_id) wgid : vec3<u32>;
+  @builtin(global_invocation_id) gid : vec3<u32>,
+  @builtin(num_workgroups) num_wgs : vec3<u32>,
+  @builtin(workgroup_id) wgid : vec3<u32>,
 };
 
 )";
 
   auto* expect = R"(
 struct tint_symbol_2 {
-  num_workgroups : vec3<u32>;
+  num_workgroups : vec3<u32>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
 
 struct tint_symbol_1 {
   @builtin(global_invocation_id)
-  gid : vec3<u32>;
+  gid : vec3<u32>,
   @builtin(workgroup_id)
-  wgid : vec3<u32>;
+  wgid : vec3<u32>,
 }
 
 fn main_inner(in : Builtins) {
@@ -292,9 +292,9 @@
 }
 
 struct Builtins {
-  gid : vec3<u32>;
-  num_wgs : vec3<u32>;
-  wgid : vec3<u32>;
+  gid : vec3<u32>,
+  num_wgs : vec3<u32>,
+  wgid : vec3<u32>,
 }
 )";
 
@@ -310,13 +310,13 @@
 TEST_F(NumWorkgroupsFromUniformTest, MultipleEntryPoints) {
   auto* src = R"(
 struct Builtins1 {
-  @builtin(num_workgroups) num_wgs : vec3<u32>;
+  @builtin(num_workgroups) num_wgs : vec3<u32>,
 };
 
 struct Builtins2 {
-  @builtin(global_invocation_id) gid : vec3<u32>;
-  @builtin(num_workgroups) num_wgs : vec3<u32>;
-  @builtin(workgroup_id) wgid : vec3<u32>;
+  @builtin(global_invocation_id) gid : vec3<u32>,
+  @builtin(num_workgroups) num_wgs : vec3<u32>,
+  @builtin(workgroup_id) wgid : vec3<u32>,
 };
 
 @stage(compute) @workgroup_size(1)
@@ -343,19 +343,19 @@
 
   auto* expect = R"(
 struct tint_symbol_6 {
-  num_workgroups : vec3<u32>;
+  num_workgroups : vec3<u32>,
 }
 
 @group(0) @binding(30) var<uniform> tint_symbol_7 : tint_symbol_6;
 
 struct Builtins1 {
-  num_wgs : vec3<u32>;
+  num_wgs : vec3<u32>,
 }
 
 struct Builtins2 {
-  gid : vec3<u32>;
-  num_wgs : vec3<u32>;
-  wgid : vec3<u32>;
+  gid : vec3<u32>,
+  num_wgs : vec3<u32>,
+  wgid : vec3<u32>,
 }
 
 fn main1_inner(in : Builtins1) {
@@ -371,9 +371,9 @@
 
 struct tint_symbol_3 {
   @builtin(global_invocation_id)
-  gid : vec3<u32>;
+  gid : vec3<u32>,
   @builtin(workgroup_id)
-  wgid : vec3<u32>;
+  wgid : vec3<u32>,
 }
 
 fn main2_inner(in : Builtins2) {
@@ -411,8 +411,8 @@
 TEST_F(NumWorkgroupsFromUniformTest, NoUsages) {
   auto* src = R"(
 struct Builtins {
-  @builtin(global_invocation_id) gid : vec3<u32>;
-  @builtin(workgroup_id) wgid : vec3<u32>;
+  @builtin(global_invocation_id) gid : vec3<u32>,
+  @builtin(workgroup_id) wgid : vec3<u32>,
 };
 
 @stage(compute) @workgroup_size(1)
@@ -422,15 +422,15 @@
 
   auto* expect = R"(
 struct Builtins {
-  gid : vec3<u32>;
-  wgid : vec3<u32>;
+  gid : vec3<u32>,
+  wgid : vec3<u32>,
 }
 
 struct tint_symbol_1 {
   @builtin(global_invocation_id)
-  gid : vec3<u32>;
+  gid : vec3<u32>,
   @builtin(workgroup_id)
-  wgid : vec3<u32>;
+  wgid : vec3<u32>,
 }
 
 fn main_inner(in : Builtins) {
diff --git a/src/tint/transform/promote_initializers_to_const_var_test.cc b/src/tint/transform/promote_initializers_to_const_var_test.cc
index 126f461..b99f965 100644
--- a/src/tint/transform/promote_initializers_to_const_var_test.cc
+++ b/src/tint/transform/promote_initializers_to_const_var_test.cc
@@ -62,9 +62,9 @@
 TEST_F(PromoteInitializersToConstVarTest, BasicStruct) {
   auto* src = R"(
 struct S {
-  a : i32;
-  b : f32;
-  c : vec3<f32>;
+  a : i32,
+  b : f32,
+  c : vec3<f32>,
 };
 
 fn f() {
@@ -74,9 +74,9 @@
 
   auto* expect = R"(
 struct S {
-  a : i32;
-  b : f32;
-  c : vec3<f32>;
+  a : i32,
+  b : f32,
+  c : vec3<f32>,
 }
 
 fn f() {
@@ -98,9 +98,9 @@
 }
 
 struct S {
-  a : i32;
-  b : f32;
-  c : vec3<f32>;
+  a : i32,
+  b : f32,
+  c : vec3<f32>,
 };
 )";
 
@@ -111,9 +111,9 @@
 }
 
 struct S {
-  a : i32;
-  b : f32;
-  c : vec3<f32>;
+  a : i32,
+  b : f32,
+  c : vec3<f32>,
 }
 )";
 
@@ -152,9 +152,9 @@
 TEST_F(PromoteInitializersToConstVarTest, StructInForLoopInit) {
   auto* src = R"(
 struct S {
-  a : i32;
-  b : f32;
-  c : vec3<f32>;
+  a : i32,
+  b : f32,
+  c : vec3<f32>,
 };
 
 fn f() {
@@ -167,9 +167,9 @@
 
   auto* expect = R"(
 struct S {
-  a : i32;
-  b : f32;
-  c : vec3<f32>;
+  a : i32,
+  b : f32,
+  c : vec3<f32>,
 }
 
 fn f() {
@@ -197,9 +197,9 @@
 }
 
 struct S {
-  a : i32;
-  b : f32;
-  c : vec3<f32>;
+  a : i32,
+  b : f32,
+  c : vec3<f32>,
 };
 )";
 
@@ -213,9 +213,9 @@
 }
 
 struct S {
-  a : i32;
-  b : f32;
-  c : vec3<f32>;
+  a : i32,
+  b : f32,
+  c : vec3<f32>,
 }
 )";
 
@@ -443,17 +443,17 @@
 TEST_F(PromoteInitializersToConstVarTest, StructNested) {
   auto* src = R"(
 struct S1 {
-  a : i32;
+  a : i32,
 };
 
 struct S2 {
-  a : i32;
-  b : S1;
-  c : i32;
+  a : i32,
+  b : S1,
+  c : i32,
 };
 
 struct S3 {
-  a : S2;
+  a : S2,
 };
 
 fn f() {
@@ -463,17 +463,17 @@
 
   auto* expect = R"(
 struct S1 {
-  a : i32;
+  a : i32,
 }
 
 struct S2 {
-  a : i32;
-  b : S1;
-  c : i32;
+  a : i32,
+  b : S1,
+  c : i32,
 }
 
 struct S3 {
-  a : S2;
+  a : S2,
 }
 
 fn f() {
@@ -493,11 +493,11 @@
 TEST_F(PromoteInitializersToConstVarTest, Mixed) {
   auto* src = R"(
 struct S1 {
-  a : i32;
+  a : i32,
 };
 
 struct S2 {
-  a : array<S1, 3u>;
+  a : array<S1, 3u>,
 };
 
 fn f() {
@@ -507,11 +507,11 @@
 
   auto* expect = R"(
 struct S1 {
-  a : i32;
+  a : i32,
 }
 
 struct S2 {
-  a : array<S1, 3u>;
+  a : array<S1, 3u>,
 }
 
 fn f() {
@@ -537,11 +537,11 @@
 }
 
 struct S2 {
-  a : array<S1, 3u>;
+  a : array<S1, 3u>,
 };
 
 struct S1 {
-  a : i32;
+  a : i32,
 };
 )";
 
@@ -556,11 +556,11 @@
 }
 
 struct S2 {
-  a : array<S1, 3u>;
+  a : array<S1, 3u>,
 }
 
 struct S1 {
-  a : i32;
+  a : i32,
 }
 )";
 
@@ -573,9 +573,9 @@
 TEST_F(PromoteInitializersToConstVarTest, NoChangeOnVarDecl) {
   auto* src = R"(
 struct S {
-  a : i32;
-  b : f32;
-  c : i32;
+  a : i32,
+  b : f32,
+  c : i32,
 }
 
 fn f() {
@@ -606,9 +606,9 @@
 let module_str : S = S(1, 2.0, 3);
 
 struct S {
-  a : i32;
-  b : f32;
-  c : i32;
+  a : i32,
+  b : f32,
+  c : i32,
 }
 
 let module_arr : array<f32, 4u> = array<f32, 4u>(0.0, 1.0, 2.0, 3.0);
diff --git a/src/tint/transform/promote_side_effects_to_decl_test.cc b/src/tint/transform/promote_side_effects_to_decl_test.cc
index db1410c..0f8c59a 100644
--- a/src/tint/transform/promote_side_effects_to_decl_test.cc
+++ b/src/tint/transform/promote_side_effects_to_decl_test.cc
@@ -444,7 +444,7 @@
 TEST_F(PromoteSideEffectsToDeclTest, Binary_Arith_Builtins_WithSE) {
   auto* src = R"(
 struct SB {
-  a : atomic<i32>;
+  a : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -457,7 +457,7 @@
 
   auto* expect = R"(
 struct SB {
-  a : atomic<i32>;
+  a : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -478,7 +478,7 @@
 TEST_F(PromoteSideEffectsToDeclTest, Binary_Arith_Builtins_NoSEAndVar) {
   auto* src = R"(
 struct SB {
-  a : atomic<i32>;
+  a : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -500,7 +500,7 @@
 TEST_F(PromoteSideEffectsToDeclTest, Binary_Arith_Builtins_NoSEAndSE) {
   auto* src = R"(
 struct SB {
-  a : atomic<i32>;
+  a : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -517,7 +517,7 @@
 
   auto* expect = R"(
 struct SB {
-  a : atomic<i32>;
+  a : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
@@ -728,7 +728,7 @@
   auto* src = R"(
 
 struct S {
-  v : i32;
+  v : i32,
 }
 
 fn a(i : i32) -> S {
@@ -743,7 +743,7 @@
 
   auto* expect = R"(
 struct S {
-  v : i32;
+  v : i32,
 }
 
 fn a(i : i32) -> S {
@@ -2002,7 +2002,7 @@
   auto* src = R"(
 
 struct S {
-  v : bool;
+  v : bool,
 }
 
 fn a(i : i32) -> S {
@@ -2017,7 +2017,7 @@
 
   auto* expect = R"(
 struct S {
-  v : bool;
+  v : bool,
 }
 
 fn a(i : i32) -> S {
@@ -2961,9 +2961,9 @@
 }
 
 struct S {
-  x : i32;
-  y : i32;
-  z : i32;
+  x : i32,
+  y : i32,
+  z : i32,
 }
 
 fn f() {
@@ -2977,9 +2977,9 @@
 }
 
 struct S {
-  x : i32;
-  y : i32;
-  z : i32;
+  x : i32,
+  y : i32,
+  z : i32,
 }
 
 fn f() {
@@ -3091,8 +3091,8 @@
 TEST_F(PromoteSideEffectsToDeclTest, MemberAccessor_Struct) {
   auto* src = R"(
 struct S {
-  x : i32;
-  y : i32;
+  x : i32,
+  y : i32,
 }
 
 fn a(i : i32) -> S {
@@ -3106,8 +3106,8 @@
 
   auto* expect = R"(
 struct S {
-  x : i32;
-  y : i32;
+  x : i32,
+  y : i32,
 }
 
 fn a(i : i32) -> S {
@@ -3130,9 +3130,9 @@
 TEST_F(PromoteSideEffectsToDeclTest, MemberAccessor_Struct_Mixed) {
   auto* src = R"(
 struct S {
-  x : i32;
-  y : i32;
-  arr : array<i32, 10>;
+  x : i32,
+  y : i32,
+  arr : array<i32, 10>,
 }
 
 fn a(i : i32) -> S {
@@ -3155,9 +3155,9 @@
 
   auto* expect = R"(
 struct S {
-  x : i32;
-  y : i32;
-  arr : array<i32, 10>;
+  x : i32,
+  y : i32,
+  arr : array<i32, 10>,
 }
 
 fn a(i : i32) -> S {
diff --git a/src/tint/transform/remove_phonies_test.cc b/src/tint/transform/remove_phonies_test.cc
index 15ae60b..dc6099c 100644
--- a/src/tint/transform/remove_phonies_test.cc
+++ b/src/tint/transform/remove_phonies_test.cc
@@ -295,7 +295,7 @@
 TEST_F(RemovePhoniesTest, ForLoop) {
   auto* src = R"(
 struct S {
-  arr : array<i32>;
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -324,7 +324,7 @@
 
   auto* expect = R"(
 struct S {
-  arr : array<i32>;
+  arr : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -383,7 +383,7 @@
 }
 
 struct S {
-  arr : array<i32>;
+  arr : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read_write> s : S;
@@ -415,7 +415,7 @@
 }
 
 struct S {
-  arr : array<i32>;
+  arr : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
diff --git a/src/tint/transform/robustness_test.cc b/src/tint/transform/robustness_test.cc
index 1d19987..1e1dac6 100644
--- a/src/tint/transform/robustness_test.cc
+++ b/src/tint/transform/robustness_test.cc
@@ -323,8 +323,8 @@
 TEST_F(RobustnessTest, DISABLED_LargeArrays_Idx) {
   auto* src = R"(
 struct S {
-  a : array<f32, 0x7fffffff>;
-  b : array<f32>;
+  a : array<f32, 0x7fffffff>,
+  b : array<f32>,
 };
 @group(0) @binding(0) var<storage, read> s : S;
 
@@ -361,8 +361,8 @@
 
   auto* expect = R"(
 struct S {
-  a : array<f32, 2147483647>;
-  b : array<f32>;
+  a : array<f32, 2147483647>,
+  b : array<f32>,
 };
 
 @group(0) @binding(0) var<storage, read> s : S;
@@ -1093,8 +1093,8 @@
 TEST_F(RobustnessTest, RuntimeArray_Clamps) {
   auto* src = R"(
 struct S {
-  a : f32;
-  b : array<f32>;
+  a : f32,
+  b : array<f32>,
 };
 @group(0) @binding(0) var<storage, read> s : S;
 
@@ -1105,8 +1105,8 @@
 
   auto* expect = R"(
 struct S {
-  a : f32;
-  b : array<f32>;
+  a : f32,
+  b : array<f32>,
 }
 
 @group(0) @binding(0) var<storage, read> s : S;
@@ -1130,8 +1130,8 @@
 @group(0) @binding(0) var<storage, read> s : S;
 
 struct S {
-  a : f32;
-  b : array<f32>;
+  a : f32,
+  b : array<f32>,
 };
 )";
 
@@ -1143,8 +1143,8 @@
 @group(0) @binding(0) var<storage, read> s : S;
 
 struct S {
-  a : f32;
-  b : array<f32>;
+  a : f32,
+  b : array<f32>,
 }
 )";
 
@@ -1387,8 +1387,8 @@
 TEST_F(RobustnessTest, DontRenameSymbols) {
   auto* src = R"(
 struct S {
-  a : f32;
-  b : array<f32>;
+  a : f32,
+  b : array<f32>,
 };
 
 @group(0) @binding(0) var<storage, read> s : S;
@@ -1404,8 +1404,8 @@
 
   auto* expect = R"(
 struct S {
-  a : f32;
-  b : array<f32>;
+  a : f32,
+  b : array<f32>,
 }
 
 @group(0) @binding(0) var<storage, read> s : S;
@@ -1426,14 +1426,14 @@
 
 const char* kOmitSourceShader = R"(
 struct S {
-  a : array<f32, 4>;
-  b : array<f32>;
+  a : array<f32, 4>,
+  b : array<f32>,
 };
 @group(0) @binding(0) var<storage, read> s : S;
 
 type UArr = array<vec4<f32>, 4>;
 struct U {
-  a : UArr;
+  a : UArr,
 };
 @group(1) @binding(0) var<uniform> u : U;
 
@@ -1484,8 +1484,8 @@
 TEST_F(RobustnessTest, OmitNone) {
   auto* expect = R"(
 struct S {
-  a : array<f32, 4>;
-  b : array<f32>;
+  a : array<f32, 4>,
+  b : array<f32>,
 }
 
 @group(0) @binding(0) var<storage, read> s : S;
@@ -1493,7 +1493,7 @@
 type UArr = array<vec4<f32>, 4>;
 
 struct U {
-  a : UArr;
+  a : UArr,
 }
 
 @group(1) @binding(0) var<uniform> u : U;
@@ -1547,8 +1547,8 @@
 TEST_F(RobustnessTest, OmitStorage) {
   auto* expect = R"(
 struct S {
-  a : array<f32, 4>;
-  b : array<f32>;
+  a : array<f32, 4>,
+  b : array<f32>,
 }
 
 @group(0) @binding(0) var<storage, read> s : S;
@@ -1556,7 +1556,7 @@
 type UArr = array<vec4<f32>, 4>;
 
 struct U {
-  a : UArr;
+  a : UArr,
 }
 
 @group(1) @binding(0) var<uniform> u : U;
@@ -1612,8 +1612,8 @@
 TEST_F(RobustnessTest, OmitUniform) {
   auto* expect = R"(
 struct S {
-  a : array<f32, 4>;
-  b : array<f32>;
+  a : array<f32, 4>,
+  b : array<f32>,
 }
 
 @group(0) @binding(0) var<storage, read> s : S;
@@ -1621,7 +1621,7 @@
 type UArr = array<vec4<f32>, 4>;
 
 struct U {
-  a : UArr;
+  a : UArr,
 }
 
 @group(1) @binding(0) var<uniform> u : U;
@@ -1677,8 +1677,8 @@
 TEST_F(RobustnessTest, OmitBoth) {
   auto* expect = R"(
 struct S {
-  a : array<f32, 4>;
-  b : array<f32>;
+  a : array<f32, 4>,
+  b : array<f32>,
 }
 
 @group(0) @binding(0) var<storage, read> s : S;
@@ -1686,7 +1686,7 @@
 type UArr = array<vec4<f32>, 4>;
 
 struct U {
-  a : UArr;
+  a : UArr,
 }
 
 @group(1) @binding(0) var<uniform> u : U;
diff --git a/src/tint/transform/simplify_pointers_test.cc b/src/tint/transform/simplify_pointers_test.cc
index cfcb244..0e9d44b 100644
--- a/src/tint/transform/simplify_pointers_test.cc
+++ b/src/tint/transform/simplify_pointers_test.cc
@@ -131,7 +131,7 @@
 TEST_F(SimplifyPointersTest, SavedVars) {
   auto* src = R"(
 struct S {
-  i : i32;
+  i : i32,
 };
 
 fn arr() {
@@ -155,7 +155,7 @@
 
   auto* expect = R"(
 struct S {
-  i : i32;
+  i : i32,
 }
 
 fn arr() {
@@ -283,11 +283,11 @@
 }
 
 struct Inner {
-  a : array<i32, 2>;
+  a : array<i32, 2>,
 };
 
 struct Outer {
-  a : array<Inner, 2>;
+  a : array<Inner, 2>,
 };
 
 fn f() {
@@ -312,11 +312,11 @@
 }
 
 struct Inner {
-  a : array<i32, 2>;
+  a : array<i32, 2>,
 }
 
 struct Outer {
-  a : array<Inner, 2>;
+  a : array<Inner, 2>,
 }
 
 fn f() {
diff --git a/src/tint/transform/unshadow_test.cc b/src/tint/transform/unshadow_test.cc
index b533bd4..6ca1375 100644
--- a/src/tint/transform/unshadow_test.cc
+++ b/src/tint/transform/unshadow_test.cc
@@ -117,7 +117,7 @@
 TEST_F(UnshadowTest, LocalShadowsStruct) {
   auto* src = R"(
 struct a {
-  m : i32;
+  m : i32,
 };
 
 fn X() {
@@ -131,7 +131,7 @@
 
   auto* expect = R"(
 struct a {
-  m : i32;
+  m : i32,
 }
 
 fn X() {
@@ -159,7 +159,7 @@
 }
 
 struct a {
-  m : i32;
+  m : i32,
 };
 
 )";
@@ -174,7 +174,7 @@
 }
 
 struct a {
-  m : i32;
+  m : i32,
 }
 )";
 
diff --git a/src/tint/transform/vertex_pulling_test.cc b/src/tint/transform/vertex_pulling_test.cc
index 725b7de..313133d 100644
--- a/src/tint/transform/vertex_pulling_test.cc
+++ b/src/tint/transform/vertex_pulling_test.cc
@@ -108,7 +108,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @stage(vertex)
@@ -137,7 +137,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -175,7 +175,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -213,7 +213,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(5) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -245,7 +245,7 @@
 TEST_F(VertexPullingTest, OneAttribute_Struct) {
   auto* src = R"(
 struct Inputs {
-  @location(0) var_a : f32;
+  @location(0) var_a : f32,
 };
 
 @stage(vertex)
@@ -256,14 +256,14 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
 struct Inputs {
   @location(0)
-  var_a : f32;
+  var_a : f32,
 }
 
 @stage(vertex)
@@ -304,7 +304,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -350,10 +350,10 @@
 TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex_Struct) {
   auto* src = R"(
 struct Inputs {
-  @location(0) var_a : f32;
-  @location(1) var_b : f32;
-  @builtin(vertex_index) custom_vertex_index : u32;
-  @builtin(instance_index) custom_instance_index : u32;
+  @location(0) var_a : f32,
+  @location(1) var_b : f32,
+  @builtin(vertex_index) custom_vertex_index : u32,
+  @builtin(instance_index) custom_instance_index : u32,
 };
 
 @stage(vertex)
@@ -364,7 +364,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -373,20 +373,20 @@
 
 struct tint_symbol {
   @builtin(vertex_index)
-  custom_vertex_index : u32;
+  custom_vertex_index : u32,
   @builtin(instance_index)
-  custom_instance_index : u32;
+  custom_instance_index : u32,
 }
 
 struct Inputs {
   @location(0)
-  var_a : f32;
+  var_a : f32,
   @location(1)
-  var_b : f32;
+  var_b : f32,
   @builtin(vertex_index)
-  custom_vertex_index : u32;
+  custom_vertex_index : u32,
   @builtin(instance_index)
-  custom_instance_index : u32;
+  custom_instance_index : u32,
 }
 
 @stage(vertex)
@@ -435,16 +435,16 @@
 }
 
 struct Inputs {
-  @location(0) var_a : f32;
-  @location(1) var_b : f32;
-  @builtin(vertex_index) custom_vertex_index : u32;
-  @builtin(instance_index) custom_instance_index : u32;
+  @location(0) var_a : f32,
+  @location(1) var_b : f32,
+  @builtin(vertex_index) custom_vertex_index : u32,
+  @builtin(instance_index) custom_instance_index : u32,
 };
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -453,9 +453,9 @@
 
 struct tint_symbol {
   @builtin(vertex_index)
-  custom_vertex_index : u32;
+  custom_vertex_index : u32,
   @builtin(instance_index)
-  custom_instance_index : u32;
+  custom_instance_index : u32,
 }
 
 @stage(vertex)
@@ -474,13 +474,13 @@
 
 struct Inputs {
   @location(0)
-  var_a : f32;
+  var_a : f32,
   @location(1)
-  var_b : f32;
+  var_b : f32,
   @builtin(vertex_index)
-  custom_vertex_index : u32;
+  custom_vertex_index : u32,
   @builtin(instance_index)
-  custom_instance_index : u32;
+  custom_instance_index : u32,
 }
 )";
 
@@ -509,13 +509,13 @@
 TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex_SeparateStruct) {
   auto* src = R"(
 struct Inputs {
-  @location(0) var_a : f32;
-  @location(1) var_b : f32;
+  @location(0) var_a : f32,
+  @location(1) var_b : f32,
 };
 
 struct Indices {
-  @builtin(vertex_index) custom_vertex_index : u32;
-  @builtin(instance_index) custom_instance_index : u32;
+  @builtin(vertex_index) custom_vertex_index : u32,
+  @builtin(instance_index) custom_instance_index : u32,
 };
 
 @stage(vertex)
@@ -526,7 +526,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -535,16 +535,16 @@
 
 struct Inputs {
   @location(0)
-  var_a : f32;
+  var_a : f32,
   @location(1)
-  var_b : f32;
+  var_b : f32,
 }
 
 struct Indices {
   @builtin(vertex_index)
-  custom_vertex_index : u32;
+  custom_vertex_index : u32,
   @builtin(instance_index)
-  custom_instance_index : u32;
+  custom_instance_index : u32,
 }
 
 @stage(vertex)
@@ -591,19 +591,19 @@
 }
 
 struct Inputs {
-  @location(0) var_a : f32;
-  @location(1) var_b : f32;
+  @location(0) var_a : f32,
+  @location(1) var_b : f32,
 };
 
 struct Indices {
-  @builtin(vertex_index) custom_vertex_index : u32;
-  @builtin(instance_index) custom_instance_index : u32;
+  @builtin(vertex_index) custom_vertex_index : u32,
+  @builtin(instance_index) custom_instance_index : u32,
 };
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -624,16 +624,16 @@
 
 struct Inputs {
   @location(0)
-  var_a : f32;
+  var_a : f32,
   @location(1)
-  var_b : f32;
+  var_b : f32,
 }
 
 struct Indices {
   @builtin(vertex_index)
-  custom_vertex_index : u32;
+  custom_vertex_index : u32,
   @builtin(instance_index)
-  custom_instance_index : u32;
+  custom_instance_index : u32,
 }
 )";
 
@@ -670,7 +670,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -715,7 +715,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -771,7 +771,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data_1 : array<u32>;
+  tint_vertex_data_1 : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0_1 : TintVertexData;
@@ -848,7 +848,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -1008,7 +1008,7 @@
   auto* expect =
       R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
@@ -1167,7 +1167,7 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : array<u32>;
+  tint_vertex_data : array<u32>,
 }
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
diff --git a/src/tint/transform/wrap_arrays_in_structs_test.cc b/src/tint/transform/wrap_arrays_in_structs_test.cc
index 231c3d6..7627484 100644
--- a/src/tint/transform/wrap_arrays_in_structs_test.cc
+++ b/src/tint/transform/wrap_arrays_in_structs_test.cc
@@ -54,7 +54,7 @@
 )";
   auto* expect = R"(
 struct tint_array_wrapper {
-  arr : array<i32, 4u>;
+  arr : array<i32, 4u>,
 }
 
 var<private> arr : tint_array_wrapper;
@@ -74,7 +74,7 @@
 )";
   auto* expect = R"(
 struct tint_array_wrapper {
-  arr : array<i32, 4u>;
+  arr : array<i32, 4u>,
 }
 
 fn f() {
@@ -96,7 +96,7 @@
 )";
   auto* expect = R"(
 struct tint_array_wrapper {
-  arr : array<i32, 4u>;
+  arr : array<i32, 4u>,
 }
 
 fn f(a : tint_array_wrapper) -> i32 {
@@ -117,7 +117,7 @@
 )";
   auto* expect = R"(
 struct tint_array_wrapper {
-  arr : array<i32, 4u>;
+  arr : array<i32, 4u>,
 }
 
 fn f() -> tint_array_wrapper {
@@ -146,13 +146,13 @@
 )";
   auto* expect = R"(
 struct tint_array_wrapper {
-  arr : array<i32, 2u>;
+  arr : array<i32, 2u>,
 }
 
 type Inner = tint_array_wrapper;
 
 struct tint_array_wrapper_1 {
-  arr : array<tint_array_wrapper, 2u>;
+  arr : array<tint_array_wrapper, 2u>,
 }
 
 type Array = tint_array_wrapper_1;
@@ -188,11 +188,11 @@
 )";
   auto* expect = R"(
 struct tint_array_wrapper_1 {
-  arr : array<i32, 2u>;
+  arr : array<i32, 2u>,
 }
 
 struct tint_array_wrapper {
-  arr : array<tint_array_wrapper_1, 2u>;
+  arr : array<tint_array_wrapper_1, 2u>,
 }
 
 fn f() {
@@ -217,24 +217,24 @@
 TEST_F(WrapArraysInStructsTest, ArraysInStruct) {
   auto* src = R"(
 struct S {
-  a : array<i32, 4>;
-  b : array<i32, 8>;
-  c : array<i32, 4>;
+  a : array<i32, 4>,
+  b : array<i32, 8>,
+  c : array<i32, 4>,
 };
 )";
   auto* expect = R"(
 struct tint_array_wrapper {
-  arr : array<i32, 4u>;
+  arr : array<i32, 4u>,
 }
 
 struct tint_array_wrapper_1 {
-  arr : array<i32, 8u>;
+  arr : array<i32, 8u>,
 }
 
 struct S {
-  a : tint_array_wrapper;
-  b : tint_array_wrapper_1;
-  c : tint_array_wrapper;
+  a : tint_array_wrapper,
+  b : tint_array_wrapper_1,
+  c : tint_array_wrapper,
 }
 )";
 
@@ -246,28 +246,28 @@
 TEST_F(WrapArraysInStructsTest, ArraysOfArraysInStruct) {
   auto* src = R"(
 struct S {
-  a : array<i32, 4>;
-  b : array<array<i32, 4>, 4>;
-  c : array<array<array<i32, 4>, 4>, 4>;
+  a : array<i32, 4>,
+  b : array<array<i32, 4>, 4>,
+  c : array<array<array<i32, 4>, 4>, 4>,
 };
 )";
   auto* expect = R"(
 struct tint_array_wrapper {
-  arr : array<i32, 4u>;
+  arr : array<i32, 4u>,
 }
 
 struct tint_array_wrapper_1 {
-  arr : array<tint_array_wrapper, 4u>;
+  arr : array<tint_array_wrapper, 4u>,
 }
 
 struct tint_array_wrapper_2 {
-  arr : array<tint_array_wrapper_1, 4u>;
+  arr : array<tint_array_wrapper_1, 4u>,
 }
 
 struct S {
-  a : tint_array_wrapper;
-  b : tint_array_wrapper_1;
-  c : tint_array_wrapper_2;
+  a : tint_array_wrapper,
+  b : tint_array_wrapper_1,
+  c : tint_array_wrapper_2,
 }
 )";
 
@@ -279,9 +279,9 @@
 TEST_F(WrapArraysInStructsTest, AccessArraysOfArraysInStruct) {
   auto* src = R"(
 struct S {
-  a : array<i32, 4>;
-  b : array<array<i32, 4>, 4>;
-  c : array<array<array<i32, 4>, 4>, 4>;
+  a : array<i32, 4>,
+  b : array<array<i32, 4>, 4>,
+  c : array<array<array<i32, 4>, 4>, 4>,
 };
 
 fn f(s : S) -> i32 {
@@ -290,21 +290,21 @@
 )";
   auto* expect = R"(
 struct tint_array_wrapper {
-  arr : array<i32, 4u>;
+  arr : array<i32, 4u>,
 }
 
 struct tint_array_wrapper_1 {
-  arr : array<tint_array_wrapper, 4u>;
+  arr : array<tint_array_wrapper, 4u>,
 }
 
 struct tint_array_wrapper_2 {
-  arr : array<tint_array_wrapper_1, 4u>;
+  arr : array<tint_array_wrapper_1, 4u>,
 }
 
 struct S {
-  a : tint_array_wrapper;
-  b : tint_array_wrapper_1;
-  c : tint_array_wrapper_2;
+  a : tint_array_wrapper,
+  b : tint_array_wrapper_1,
+  c : tint_array_wrapper_2,
 }
 
 fn f(s : S) -> i32 {
@@ -338,7 +338,7 @@
 type T0 = i32;
 
 struct tint_array_wrapper {
-  arr : array<i32, 1u>;
+  arr : array<i32, 1u>,
 }
 
 type T1 = tint_array_wrapper;
@@ -346,7 +346,7 @@
 type T2 = i32;
 
 struct tint_array_wrapper_1 {
-  arr : array<i32, 2u>;
+  arr : array<i32, 2u>,
 }
 
 fn f1(a : tint_array_wrapper_1) {
@@ -355,7 +355,7 @@
 type T3 = i32;
 
 struct tint_array_wrapper_2 {
-  arr : array<i32, 3u>;
+  arr : array<i32, 3u>,
 }
 
 fn f2() {
@@ -387,7 +387,7 @@
 )";
   auto* expect = R"(
 struct tint_array_wrapper {
-  arr : array<i32, 3u>;
+  arr : array<i32, 3u>,
 }
 
 fn f2() {
@@ -397,7 +397,7 @@
 type T3 = i32;
 
 struct tint_array_wrapper_1 {
-  arr : array<i32, 2u>;
+  arr : array<i32, 2u>,
 }
 
 fn f1(a : tint_array_wrapper_1) {
@@ -406,7 +406,7 @@
 type T2 = i32;
 
 struct tint_array_wrapper_2 {
-  arr : array<i32, 1u>;
+  arr : array<i32, 1u>,
 }
 
 type T1 = tint_array_wrapper_2;
diff --git a/src/tint/transform/zero_init_workgroup_memory_test.cc b/src/tint/transform/zero_init_workgroup_memory_test.cc
index 2ea842b..cfe4647 100644
--- a/src/tint/transform/zero_init_workgroup_memory_test.cc
+++ b/src/tint/transform/zero_init_workgroup_memory_test.cc
@@ -177,7 +177,7 @@
 var<workgroup> v : i32;
 
 struct Params {
-  @builtin(local_invocation_index) local_idx : u32;
+  @builtin(local_invocation_index) local_idx : u32,
 };
 
 @stage(compute) @workgroup_size(1)
@@ -190,7 +190,7 @@
 
 struct Params {
   @builtin(local_invocation_index)
-  local_idx : u32;
+  local_idx : u32,
 }
 
 @stage(compute) @workgroup_size(1)
@@ -217,7 +217,7 @@
 }
 
 struct Params {
-  @builtin(local_invocation_index) local_idx : u32;
+  @builtin(local_invocation_index) local_idx : u32,
 };
 
 var<workgroup> v : i32;
@@ -234,7 +234,7 @@
 
 struct Params {
   @builtin(local_invocation_index)
-  local_idx : u32;
+  local_idx : u32,
 }
 
 var<workgroup> v : i32;
@@ -304,8 +304,8 @@
        MultipleWorkgroupVar_ExistingLocalIndex_Size1) {
   auto* src = R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 };
 
 var<workgroup> a : i32;
@@ -323,8 +323,8 @@
 )";
   auto* expect = R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 }
 
 var<workgroup> a : i32;
@@ -381,8 +381,8 @@
 var<workgroup> c : array<S, 32>;
 
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 };
 )";
   auto* expect = R"(
@@ -418,8 +418,8 @@
 var<workgroup> c : array<S, 32>;
 
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 }
 )";
 
@@ -432,8 +432,8 @@
        MultipleWorkgroupVar_ExistingLocalIndex_Size_2_3) {
   auto* src = R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 };
 
 var<workgroup> a : i32;
@@ -451,8 +451,8 @@
 )";
   auto* expect = R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 }
 
 var<workgroup> a : i32;
@@ -496,8 +496,8 @@
        MultipleWorkgroupVar_ExistingLocalIndex_Size_2_3_X) {
   auto* src = R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 };
 
 var<workgroup> a : i32;
@@ -518,8 +518,8 @@
   auto* expect =
       R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 }
 
 var<workgroup> a : i32;
@@ -565,9 +565,9 @@
        MultipleWorkgroupVar_ExistingLocalIndex_Size_5u_X_10u) {
   auto* src = R"(
 struct S {
-  x : array<array<i32, 8>, 10>;
-  y : array<i32, 8>;
-  z : array<array<array<i32, 8>, 10>, 20>;
+  x : array<array<i32, 8>, 10>,
+  y : array<i32, 8>,
+  z : array<array<array<i32, 8>, 10>, 20>,
 };
 
 var<workgroup> a : i32;
@@ -588,9 +588,9 @@
   auto* expect =
       R"(
 struct S {
-  x : array<array<i32, 8>, 10>;
-  y : array<i32, 8>;
-  z : array<array<array<i32, 8>, 10>, 20>;
+  x : array<array<i32, 8>, 10>,
+  y : array<i32, 8>,
+  z : array<array<array<i32, 8>, 10>, 20>,
 }
 
 var<workgroup> a : i32;
@@ -654,8 +654,8 @@
 TEST_F(ZeroInitWorkgroupMemoryTest, MultipleWorkgroupVar_InjectedLocalIndex) {
   auto* src = R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 };
 
 var<workgroup> a : i32;
@@ -673,8 +673,8 @@
 )";
   auto* expect = R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 }
 
 var<workgroup> a : i32;
@@ -731,8 +731,8 @@
 var<workgroup> c : array<S, 32>;
 
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 };
 )";
   auto* expect = R"(
@@ -768,8 +768,8 @@
 var<workgroup> c : array<S, 32>;
 
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 }
 )";
 
@@ -781,8 +781,8 @@
 TEST_F(ZeroInitWorkgroupMemoryTest, MultipleWorkgroupVar_MultipleEntryPoints) {
   auto* src = R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 };
 
 var<workgroup> a : i32;
@@ -810,8 +810,8 @@
 )";
   auto* expect = R"(
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 }
 
 var<workgroup> a : i32;
@@ -904,8 +904,8 @@
 var<workgroup> c : array<S, 32>;
 
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 };
 )";
   auto* expect = R"(
@@ -967,8 +967,8 @@
 var<workgroup> c : array<S, 32>;
 
 struct S {
-  x : i32;
-  y : array<i32, 8>;
+  x : i32,
+  y : array<i32, 8>,
 }
 )";
 
@@ -1132,11 +1132,11 @@
 TEST_F(ZeroInitWorkgroupMemoryTest, WorkgroupStructOfAtomics) {
   auto* src = R"(
 struct S {
-  a : i32;
-  i : atomic<i32>;
-  b : f32;
-  u : atomic<u32>;
-  c : u32;
+  a : i32,
+  i : atomic<i32>,
+  b : f32,
+  u : atomic<u32>,
+  c : u32,
 };
 
 var<workgroup> w : S;
@@ -1148,11 +1148,11 @@
 )";
   auto* expect = R"(
 struct S {
-  a : i32;
-  i : atomic<i32>;
-  b : f32;
-  u : atomic<u32>;
-  c : u32;
+  a : i32,
+  i : atomic<i32>,
+  b : f32,
+  u : atomic<u32>,
+  c : u32,
 }
 
 var<workgroup> w : S;
@@ -1186,11 +1186,11 @@
 var<workgroup> w : S;
 
 struct S {
-  a : i32;
-  i : atomic<i32>;
-  b : f32;
-  u : atomic<u32>;
-  c : u32;
+  a : i32,
+  i : atomic<i32>,
+  b : f32,
+  u : atomic<u32>,
+  c : u32,
 };
 )";
   auto* expect = R"(
@@ -1210,11 +1210,11 @@
 var<workgroup> w : S;
 
 struct S {
-  a : i32;
-  i : atomic<i32>;
-  b : f32;
-  u : atomic<u32>;
-  c : u32;
+  a : i32,
+  i : atomic<i32>,
+  b : f32,
+  u : atomic<u32>,
+  c : u32,
 }
 )";
 
@@ -1282,11 +1282,11 @@
 TEST_F(ZeroInitWorkgroupMemoryTest, WorkgroupArrayOfStructOfAtomics) {
   auto* src = R"(
 struct S {
-  a : i32;
-  i : atomic<i32>;
-  b : f32;
-  u : atomic<u32>;
-  c : u32;
+  a : i32,
+  i : atomic<i32>,
+  b : f32,
+  u : atomic<u32>,
+  c : u32,
 };
 
 var<workgroup> w : array<S, 4>;
@@ -1298,11 +1298,11 @@
 )";
   auto* expect = R"(
 struct S {
-  a : i32;
-  i : atomic<i32>;
-  b : f32;
-  u : atomic<u32>;
-  c : u32;
+  a : i32,
+  i : atomic<i32>,
+  b : f32,
+  u : atomic<u32>,
+  c : u32,
 }
 
 var<workgroup> w : array<S, 4>;
@@ -1338,11 +1338,11 @@
 var<workgroup> w : array<S, 4>;
 
 struct S {
-  a : i32;
-  i : atomic<i32>;
-  b : f32;
-  u : atomic<u32>;
-  c : u32;
+  a : i32,
+  i : atomic<i32>,
+  b : f32,
+  u : atomic<u32>,
+  c : u32,
 };
 )";
   auto* expect = R"(
@@ -1363,11 +1363,11 @@
 var<workgroup> w : array<S, 4>;
 
 struct S {
-  a : i32;
-  i : atomic<i32>;
-  b : f32;
-  u : atomic<u32>;
-  c : u32;
+  a : i32,
+  i : atomic<i32>,
+  b : f32,
+  u : atomic<u32>,
+  c : u32,
 }
 )";
 
diff --git a/src/tint/writer/wgsl/generator_impl.cc b/src/tint/writer/wgsl/generator_impl.cc
index 267cef7..1bc68bc 100644
--- a/src/tint/writer/wgsl/generator_impl.cc
+++ b/src/tint/writer/wgsl/generator_impl.cc
@@ -590,7 +590,7 @@
 
     // Note: u32 is the smallest primitive we currently support. When WGSL
     // supports smaller types, this will need to be updated.
-    line() << UniqueIdentifier("padding") << " : u32;";
+    line() << UniqueIdentifier("padding") << " : u32,";
   };
 
   increment_indent();
@@ -629,7 +629,7 @@
     if (!EmitType(out, mem->type)) {
       return false;
     }
-    out << ";";
+    out << ",";
   }
   decrement_indent();
 
diff --git a/src/tint/writer/wgsl/generator_impl_alias_type_test.cc b/src/tint/writer/wgsl/generator_impl_alias_type_test.cc
index b1897cf..0d28ca3 100644
--- a/src/tint/writer/wgsl/generator_impl_alias_type_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_alias_type_test.cc
@@ -44,8 +44,8 @@
   ASSERT_TRUE(gen.EmitTypeDecl(s)) << gen.error();
   ASSERT_TRUE(gen.EmitTypeDecl(alias)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct A {
-  a : f32;
-  b : i32;
+  a : f32,
+  b : i32,
 }
 type B = A;
 )");
diff --git a/src/tint/writer/wgsl/generator_impl_function_test.cc b/src/tint/writer/wgsl/generator_impl_function_test.cc
index b60e257..b7bbf59 100644
--- a/src/tint/writer/wgsl/generator_impl_function_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_function_test.cc
@@ -209,7 +209,7 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct Data {
-  d : f32;
+  d : f32,
 }
 
 @binding(0) @group(0) var<storage, read_write> data : Data;
diff --git a/src/tint/writer/wgsl/generator_impl_global_decl_test.cc b/src/tint/writer/wgsl/generator_impl_global_decl_test.cc
index 9866a65..d90d71f 100644
--- a/src/tint/writer/wgsl/generator_impl_global_decl_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_global_decl_test.cc
@@ -78,7 +78,7 @@
   EXPECT_EQ(gen.result(), R"(  var<private> a0 : f32;
 
   struct S0 {
-    a : i32;
+    a : i32,
   }
 
   fn func() -> f32 {
@@ -88,7 +88,7 @@
   var<private> a1 : f32;
 
   struct S1 {
-    a : i32;
+    a : i32,
   }
 
   @stage(compute) @workgroup_size(1)
diff --git a/src/tint/writer/wgsl/generator_impl_type_test.cc b/src/tint/writer/wgsl/generator_impl_type_test.cc
index e42c0dd..051b08f 100644
--- a/src/tint/writer/wgsl/generator_impl_type_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_type_test.cc
@@ -162,11 +162,11 @@
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
   @size(8)
-  padding : u32;
-  a : i32;
+  padding : u32,
+  a : i32,
   @size(4)
-  padding_1 : u32;
-  b : f32;
+  padding_1 : u32,
+  b : f32,
 }
 )");
 }
@@ -183,11 +183,11 @@
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
   @size(8)
-  padding : u32;
-  tint_0_padding : i32;
+  padding : u32,
+  tint_0_padding : i32,
   @size(4)
-  padding_1 : u32;
-  tint_2_padding : f32;
+  padding_1 : u32,
+  tint_2_padding : f32,
 }
 )");
 }
@@ -203,9 +203,9 @@
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
   @align(8)
-  a : i32;
+  a : i32,
   @align(16)
-  b : f32;
+  b : f32,
 }
 )");
 }
@@ -221,9 +221,9 @@
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
   @size(16)
-  a : i32;
+  a : i32,
   @size(32)
-  b : f32;
+  b : f32,
 }
 )");
 }
@@ -238,9 +238,9 @@
 
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
-  a : i32;
+  a : i32,
   @align(8)
-  b : f32;
+  b : f32,
 }
 )");
 }
@@ -256,9 +256,9 @@
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
   @builtin(vertex_index)
-  a : u32;
+  a : u32,
   @location(2)
-  b : f32;
+  b : f32,
 }
 )");
 }
diff --git a/test/tint/array/assign_to_function_var.wgsl b/test/tint/array/assign_to_function_var.wgsl
index b2dc68d..0d9e9c8 100644
--- a/test/tint/array/assign_to_function_var.wgsl
+++ b/test/tint/array/assign_to_function_var.wgsl
@@ -1,7 +1,7 @@
 type ArrayType = array<vec4<i32>, 4>;
 
 struct S {
-  arr : ArrayType;
+  arr : ArrayType,
 };
 
 var<private> src_private : ArrayType;
diff --git a/test/tint/array/assign_to_function_var.wgsl.expected.wgsl b/test/tint/array/assign_to_function_var.wgsl.expected.wgsl
index b001ab6..b952b66 100644
--- a/test/tint/array/assign_to_function_var.wgsl.expected.wgsl
+++ b/test/tint/array/assign_to_function_var.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 type ArrayType = array<vec4<i32>, 4>;
 
 struct S {
-  arr : ArrayType;
+  arr : ArrayType,
 }
 
 var<private> src_private : ArrayType;
diff --git a/test/tint/array/assign_to_private_var.wgsl b/test/tint/array/assign_to_private_var.wgsl
index c19b3ee..87a6ac4 100644
--- a/test/tint/array/assign_to_private_var.wgsl
+++ b/test/tint/array/assign_to_private_var.wgsl
@@ -1,7 +1,7 @@
 type ArrayType = array<vec4<i32>, 4>;
 
 struct S {
-  arr : ArrayType;
+  arr : ArrayType,
 };
 
 var<private> src_private : ArrayType;
diff --git a/test/tint/array/assign_to_private_var.wgsl.expected.wgsl b/test/tint/array/assign_to_private_var.wgsl.expected.wgsl
index 7f88483..96ea662 100644
--- a/test/tint/array/assign_to_private_var.wgsl.expected.wgsl
+++ b/test/tint/array/assign_to_private_var.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 type ArrayType = array<vec4<i32>, 4>;
 
 struct S {
-  arr : ArrayType;
+  arr : ArrayType,
 }
 
 var<private> src_private : ArrayType;
diff --git a/test/tint/array/assign_to_storage_var.wgsl b/test/tint/array/assign_to_storage_var.wgsl
index 9ed30b2..63d835f 100644
--- a/test/tint/array/assign_to_storage_var.wgsl
+++ b/test/tint/array/assign_to_storage_var.wgsl
@@ -1,11 +1,11 @@
 type ArrayType = array<vec4<i32>, 4>;
 
 struct S {
-  arr : ArrayType;
+  arr : ArrayType,
 };
 
 struct S_nested {
-  arr : array<array<array<i32, 2>, 3>, 4>;
+  arr : array<array<array<i32, 2>, 3>, 4>,
 };
 
 var<private> src_private : ArrayType;
diff --git a/test/tint/array/assign_to_storage_var.wgsl.expected.wgsl b/test/tint/array/assign_to_storage_var.wgsl.expected.wgsl
index fe47458..f8b519d 100644
--- a/test/tint/array/assign_to_storage_var.wgsl.expected.wgsl
+++ b/test/tint/array/assign_to_storage_var.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
 type ArrayType = array<vec4<i32>, 4>;
 
 struct S {
-  arr : ArrayType;
+  arr : ArrayType,
 }
 
 struct S_nested {
-  arr : array<array<array<i32, 2>, 3>, 4>;
+  arr : array<array<array<i32, 2>, 3>, 4>,
 }
 
 var<private> src_private : ArrayType;
diff --git a/test/tint/array/assign_to_subexpr.wgsl b/test/tint/array/assign_to_subexpr.wgsl
index c633eb7..04fa97e 100644
--- a/test/tint/array/assign_to_subexpr.wgsl
+++ b/test/tint/array/assign_to_subexpr.wgsl
@@ -1,7 +1,7 @@
 type ArrayType = array<i32, 4>;
 
 struct S {
-  arr : array<i32, 4>;
+  arr : array<i32, 4>,
 };
 
 fn foo() {
diff --git a/test/tint/array/assign_to_subexpr.wgsl.expected.wgsl b/test/tint/array/assign_to_subexpr.wgsl.expected.wgsl
index 6d1ab68..614941a 100644
--- a/test/tint/array/assign_to_subexpr.wgsl.expected.wgsl
+++ b/test/tint/array/assign_to_subexpr.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 type ArrayType = array<i32, 4>;
 
 struct S {
-  arr : array<i32, 4>;
+  arr : array<i32, 4>,
 }
 
 fn foo() {
diff --git a/test/tint/array/assign_to_workgroup_var.wgsl b/test/tint/array/assign_to_workgroup_var.wgsl
index 1615348..8c9d2bf 100644
--- a/test/tint/array/assign_to_workgroup_var.wgsl
+++ b/test/tint/array/assign_to_workgroup_var.wgsl
@@ -1,7 +1,7 @@
 type ArrayType = array<vec4<i32>, 4>;
 
 struct S {
-  arr : ArrayType;
+  arr : ArrayType,
 };
 
 var<private> src_private : ArrayType;
diff --git a/test/tint/array/assign_to_workgroup_var.wgsl.expected.wgsl b/test/tint/array/assign_to_workgroup_var.wgsl.expected.wgsl
index 6888710..66c3814 100644
--- a/test/tint/array/assign_to_workgroup_var.wgsl.expected.wgsl
+++ b/test/tint/array/assign_to_workgroup_var.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 type ArrayType = array<vec4<i32>, 4>;
 
 struct S {
-  arr : ArrayType;
+  arr : ArrayType,
 }
 
 var<private> src_private : ArrayType;
diff --git a/test/tint/array/strides.spvasm b/test/tint/array/strides.spvasm
index 68fc329..d0ae14d 100644
--- a/test/tint/array/strides.spvasm
+++ b/test/tint/array/strides.spvasm
@@ -1,7 +1,7 @@
 ; type ARR_A = @stride(8) array<f32, 2>;
 ; type ARR_B = @stride(128) array<@stride(16) array<ARR_A, 4>, 3>;
 ; struct S {
-;   a : ARR_B;
+;   a : ARR_B,
 ; };
 ; @group(0) @binding(0) var<storage, read_write> s : S;
 ;
diff --git a/test/tint/array/strides.spvasm.expected.wgsl b/test/tint/array/strides.spvasm.expected.wgsl
index 799ce0d..81342c9 100644
--- a/test/tint/array/strides.spvasm.expected.wgsl
+++ b/test/tint/array/strides.spvasm.expected.wgsl
@@ -1,6 +1,6 @@
 struct strided_arr {
   @size(8)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
@@ -9,13 +9,13 @@
 
 struct strided_arr_1 {
   @size(128)
-  el : Arr_1;
+  el : Arr_1,
 }
 
 type Arr_2 = array<strided_arr_1, 4u>;
 
 struct S {
-  a : Arr_2;
+  a : Arr_2,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : S;
diff --git a/test/tint/benchmark/animometer.wgsl b/test/tint/benchmark/animometer.wgsl
index b850d14..393c487 100644
--- a/test/tint/benchmark/animometer.wgsl
+++ b/test/tint/benchmark/animometer.wgsl
@@ -1,13 +1,13 @@
 struct Time {
-  value : f32;
+  value : f32,
 }
 
 struct Uniforms {
-  scale : f32;
-  offsetX : f32;
-  offsetY : f32;
-  scalar : f32;
-  scalarOffset : f32;
+  scale : f32,
+  offsetX : f32,
+  offsetY : f32,
+  scalar : f32,
+  scalarOffset : f32,
 }
 
 @binding(0) @group(0) var<uniform> time : Time;
@@ -16,9 +16,9 @@
 
 struct VertexOutput {
   @builtin(position)
-  Position : vec4<f32>;
+  Position : vec4<f32>,
   @location(0)
-  v_color : vec4<f32>;
+  v_color : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/benchmark/bloom-vertical-blur.wgsl b/test/tint/benchmark/bloom-vertical-blur.wgsl
index 6425a83..79145c9 100644
--- a/test/tint/benchmark/bloom-vertical-blur.wgsl
+++ b/test/tint/benchmark/bloom-vertical-blur.wgsl
@@ -5,8 +5,8 @@
 var<private> weights : array<f32, 3> = array<f32, 3>(0.227027029, 0.31621623, 0.07027027);
 
 struct BloomUniforms {
-  radius : f32;
-  dim : f32;
+  radius : f32,
+  dim : f32,
 }
 
 @group(0) @binding(0) var<uniform> bloom : BloomUniforms;
@@ -17,7 +17,7 @@
 
 struct FragmentInput {
   @location(0)
-  texCoord : vec2<f32>;
+  texCoord : vec2<f32>,
 }
 
 fn getGaussianBlur(texCoord : vec2<f32>) -> vec4<f32> {
diff --git a/test/tint/benchmark/cluster-lights.wgsl b/test/tint/benchmark/cluster-lights.wgsl
index 00d4ee6..81d937c 100644
--- a/test/tint/benchmark/cluster-lights.wgsl
+++ b/test/tint/benchmark/cluster-lights.wgsl
@@ -1,54 +1,54 @@
 struct Camera {
-  projection : mat4x4<f32>;
-  inverseProjection : mat4x4<f32>;
-  view : mat4x4<f32>;
-  position : vec3<f32>;
-  time : f32;
-  outputSize : vec2<f32>;
-  zNear : f32;
-  zFar : f32;
+  projection : mat4x4<f32>,
+  inverseProjection : mat4x4<f32>,
+  view : mat4x4<f32>,
+  position : vec3<f32>,
+  time : f32,
+  outputSize : vec2<f32>,
+  zNear : f32,
+  zFar : f32,
 }
 
 @group(0) @binding(0) var<uniform> camera : Camera;
 
 struct ClusterBounds {
-  minAABB : vec3<f32>;
-  maxAABB : vec3<f32>;
+  minAABB : vec3<f32>,
+  maxAABB : vec3<f32>,
 }
 
 struct Clusters {
-  bounds : array<ClusterBounds, 27648>;
+  bounds : array<ClusterBounds, 27648>,
 }
 
 @group(0) @binding(1) var<storage, read> clusters : Clusters;
 
 struct ClusterLights {
-  offset : u32;
-  count : u32;
+  offset : u32,
+  count : u32,
 }
 
 struct ClusterLightGroup {
-  offset : atomic<u32>;
-  lights : array<ClusterLights, 27648>;
-  indices : array<u32, 1769472>;
+  offset : atomic<u32>,
+  lights : array<ClusterLights, 27648>,
+  indices : array<u32, 1769472>,
 }
 
 @group(0) @binding(2) var<storage, read_write> clusterLights : ClusterLightGroup;
 
 struct Light {
-  position : vec3<f32>;
-  range : f32;
-  color : vec3<f32>;
-  intensity : f32;
+  position : vec3<f32>,
+  range : f32,
+  color : vec3<f32>,
+  intensity : f32,
 }
 
 struct GlobalLights {
-  ambient : vec3<f32>;
-  dirColor : vec3<f32>;
-  dirIntensity : f32;
-  dirDirection : vec3<f32>;
-  lightCount : u32;
-  lights : array<Light>;
+  ambient : vec3<f32>,
+  dirColor : vec3<f32>,
+  dirIntensity : f32,
+  dirDirection : vec3<f32>,
+  lightCount : u32,
+  lights : array<Light>,
 }
 
 @group(0) @binding(3) var<storage, read> globalLights : GlobalLights;
diff --git a/test/tint/benchmark/metaball-isosurface.wgsl b/test/tint/benchmark/metaball-isosurface.wgsl
index 40374f4..e5dd381 100644
--- a/test/tint/benchmark/metaball-isosurface.wgsl
+++ b/test/tint/benchmark/metaball-isosurface.wgsl
@@ -1,49 +1,49 @@
 struct Tables {
-  edges : array<u32, 256>;
-  tris : array<i32, 4096>;
+  edges : array<u32, 256>,
+  tris : array<i32, 4096>,
 }
 
 @group(0) @binding(0) var<storage> tables : Tables;
 
 struct IsosurfaceVolume {
-  min : vec3<f32>;
-  max : vec3<f32>;
-  step : vec3<f32>;
-  size : vec3<u32>;
-  threshold : f32;
-  values : array<f32>;
+  min : vec3<f32>,
+  max : vec3<f32>,
+  step : vec3<f32>,
+  size : vec3<u32>,
+  threshold : f32,
+  values : array<f32>,
 }
 
 @group(0) @binding(1) var<storage, write> volume : IsosurfaceVolume;
 
 struct PositionBuffer {
-  values : array<f32>;
+  values : array<f32>,
 }
 
 @group(0) @binding(2) var<storage, write> positionsOut : PositionBuffer;
 
 struct NormalBuffer {
-  values : array<f32>;
+  values : array<f32>,
 }
 
 @group(0) @binding(3) var<storage, write> normalsOut : NormalBuffer;
 
 struct IndexBuffer {
-  tris : array<u32>;
+  tris : array<u32>,
 }
 
 @group(0) @binding(4) var<storage, write> indicesOut : IndexBuffer;
 
 struct DrawIndirectArgs {
-  vc : u32;
-  vertexCount : atomic<u32>;
-  firstVertex : u32;
-  firstInstance : u32;
-  indexCount : atomic<u32>;
-  indexedInstanceCount : u32;
-  indexedFirstIndex : u32;
-  indexedBaseVertex : u32;
-  indexedFirstInstance : u32;
+  vc : u32,
+  vertexCount : atomic<u32>,
+  firstVertex : u32,
+  firstInstance : u32,
+  indexCount : atomic<u32>,
+  indexedInstanceCount : u32,
+  indexedFirstIndex : u32,
+  indexedBaseVertex : u32,
+  indexedFirstInstance : u32,
 }
 
 @group(0) @binding(5) var<storage, read_write> drawOut : DrawIndirectArgs;
diff --git a/test/tint/benchmark/particles.wgsl b/test/tint/benchmark/particles.wgsl
index 10bfb00..ce3078c 100644
--- a/test/tint/benchmark/particles.wgsl
+++ b/test/tint/benchmark/particles.wgsl
@@ -13,22 +13,22 @@
 // Vertex shader
 ////////////////////////////////////////////////////////////////////////////////
 struct RenderParams {
-  modelViewProjectionMatrix : mat4x4<f32>;
-  right : vec3<f32>;
-  up    : vec3<f32>;
+  modelViewProjectionMatrix : mat4x4<f32>,
+  right : vec3<f32>,
+  up    : vec3<f32>,
 };
 @binding(0) @group(0) var<uniform> render_params : RenderParams;
 
 struct VertexInput {
-  @location(0) position : vec3<f32>;
-  @location(1) color    : vec4<f32>;
-  @location(2) quad_pos : vec2<f32>; // -1..+1
+  @location(0) position : vec3<f32>,
+  @location(1) color    : vec4<f32>,
+  @location(2) quad_pos : vec2<f32>, // -1..+1
 };
 
 struct VertexOutput {
-  @builtin(position) position : vec4<f32>;
-  @location(0)       color    : vec4<f32>;
-  @location(1)       quad_pos : vec2<f32>; // -1..+1
+  @builtin(position) position : vec4<f32>,
+  @location(0)       color    : vec4<f32>,
+  @location(1)       quad_pos : vec2<f32>, // -1..+1
 };
 
 @stage(vertex)
@@ -57,19 +57,19 @@
 // Simulation Compute shader
 ////////////////////////////////////////////////////////////////////////////////
 struct SimulationParams {
-  deltaTime : f32;
-  seed : vec4<f32>;
+  deltaTime : f32,
+  seed : vec4<f32>,
 };
 
 struct Particle {
-  position : vec3<f32>;
-  lifetime : f32;
-  color    : vec4<f32>;
-  velocity : vec3<f32>;
+  position : vec3<f32>,
+  lifetime : f32,
+  color    : vec4<f32>,
+  velocity : vec3<f32>,
 };
 
 struct Particles {
-  particles : array<Particle>;
+  particles : array<Particle>,
 };
 
 @binding(0) @group(0) var<uniform> sim_params : SimulationParams;
@@ -129,11 +129,11 @@
 }
 
 struct UBO {
-  width : u32;
+  width : u32,
 };
 
 struct Buffer {
-  weights : array<f32>;
+  weights : array<f32>,
 };
 
 @binding(3) @group(0) var<uniform> ubo : UBO;
diff --git a/test/tint/benchmark/shadow-fragment.wgsl b/test/tint/benchmark/shadow-fragment.wgsl
index e1a0b6e..ee8269e 100644
--- a/test/tint/benchmark/shadow-fragment.wgsl
+++ b/test/tint/benchmark/shadow-fragment.wgsl
@@ -1,9 +1,9 @@
 let shadowDepthTextureSize : f32 = 1024.0;
 
 struct Scene {
-  lightViewProjMatrix : mat4x4<f32>;
-  cameraViewProjMatrix : mat4x4<f32>;
-  lightPos : vec3<f32>;
+  lightViewProjMatrix : mat4x4<f32>,
+  cameraViewProjMatrix : mat4x4<f32>,
+  lightPos : vec3<f32>,
 }
 
 @group(0) @binding(0) var<uniform> scene : Scene;
@@ -14,11 +14,11 @@
 
 struct FragmentInput {
   @location(0)
-  shadowPos : vec3<f32>;
+  shadowPos : vec3<f32>,
   @location(1)
-  fragPos : vec3<f32>;
+  fragPos : vec3<f32>,
   @location(2)
-  fragNorm : vec3<f32>;
+  fragNorm : vec3<f32>,
 }
 
 let albedo : vec3<f32> = vec3<f32>(0.899999976, 0.899999976, 0.899999976);
diff --git a/test/tint/benchmark/simple-compute.wgsl b/test/tint/benchmark/simple-compute.wgsl
index 605bfee..d2c2f20 100644
--- a/test/tint/benchmark/simple-compute.wgsl
+++ b/test/tint/benchmark/simple-compute.wgsl
@@ -1,5 +1,5 @@
 struct SB {
-  data : array<i32>;
+  data : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read_write> buffer : SB;
diff --git a/test/tint/benchmark/simple-fragment.wgsl b/test/tint/benchmark/simple-fragment.wgsl
index 3fe67bf..7041355 100644
--- a/test/tint/benchmark/simple-fragment.wgsl
+++ b/test/tint/benchmark/simple-fragment.wgsl
@@ -1,9 +1,9 @@
 struct Input {
-  @location(0) color: vec4<f32>;
+  @location(0) color: vec4<f32>,
 };
 
 struct Output {
-  @location(0) color: vec4<f32>;
+  @location(0) color: vec4<f32>,
 };
 
 @stage(fragment)
diff --git a/test/tint/benchmark/simple-vertex.wgsl b/test/tint/benchmark/simple-vertex.wgsl
index fb13fe2..b3e260e 100644
--- a/test/tint/benchmark/simple-vertex.wgsl
+++ b/test/tint/benchmark/simple-vertex.wgsl
@@ -1,9 +1,9 @@
 struct Input {
-  @location(0) position: vec4<f32>;
+  @location(0) position: vec4<f32>,
 };
 
 struct Output {
-  @builtin(position) position : vec4<f32>;
+  @builtin(position) position : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl b/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl
index 0397c89..5aa8758 100644
--- a/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl
+++ b/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl
@@ -10,45 +10,45 @@
 }
 
 struct Camera {
-  projection : mat4x4<f32>;
-  inverseProjection : mat4x4<f32>;
-  view : mat4x4<f32>;
-  position : vec3<f32>;
-  time : f32;
-  outputSize : vec2<f32>;
-  zNear : f32;
-  zFar : f32;
+  projection : mat4x4<f32>,
+  inverseProjection : mat4x4<f32>,
+  view : mat4x4<f32>,
+  position : vec3<f32>,
+  time : f32,
+  outputSize : vec2<f32>,
+  zNear : f32,
+  zFar : f32,
 }
 
 @binding(0) @group(0) var<uniform> camera : Camera;
 
 struct ClusterLights {
-  offset : u32;
-  count : u32;
+  offset : u32,
+  count : u32,
 }
 
 struct ClusterLightGroup {
-  offset : u32;
-  lights : array<ClusterLights, 27648>;
-  indices : array<u32, 1769472>;
+  offset : u32,
+  lights : array<ClusterLights, 27648>,
+  indices : array<u32, 1769472>,
 }
 
 @binding(1) @group(0) var<storage, read> clusterLights : ClusterLightGroup;
 
 struct Light {
-  position : vec3<f32>;
-  range : f32;
-  color : vec3<f32>;
-  intensity : f32;
+  position : vec3<f32>,
+  range : f32,
+  color : vec3<f32>,
+  intensity : f32,
 }
 
 struct GlobalLights {
-  ambient : vec3<f32>;
-  dirColor : vec3<f32>;
-  dirIntensity : f32;
-  dirDirection : vec3<f32>;
-  lightCount : u32;
-  lights : array<Light>;
+  ambient : vec3<f32>,
+  dirColor : vec3<f32>,
+  dirIntensity : f32,
+  dirDirection : vec3<f32>,
+  lightCount : u32,
+  lights : array<Light>,
 }
 
 @binding(2) @group(0) var<storage, read> globalLights : GlobalLights;
@@ -78,7 +78,7 @@
 @binding(5) @group(0) var shadowSampler : sampler_comparison;
 
 struct LightShadowTable {
-  light : array<i32>;
+  light : array<i32>,
 }
 
 @binding(6) @group(0) var<storage, read> lightShadowTable : LightShadowTable;
@@ -88,12 +88,12 @@
 let shadowSampleCount = 16u;
 
 struct ShadowProperties {
-  viewport : vec4<f32>;
-  viewProj : mat4x4<f32>;
+  viewport : vec4<f32>,
+  viewProj : mat4x4<f32>,
 }
 
 struct LightShadows {
-  properties : array<ShadowProperties>;
+  properties : array<ShadowProperties>,
 }
 
 @binding(7) @group(0) var<storage, read> shadow : LightShadows;
@@ -157,33 +157,33 @@
 
 struct VertexOutput {
   @builtin(position)
-  position : vec4<f32>;
+  position : vec4<f32>,
   @location(0)
-  worldPos : vec3<f32>;
+  worldPos : vec3<f32>,
   @location(1)
-  view : vec3<f32>;
+  view : vec3<f32>,
   @location(2)
-  texcoord : vec2<f32>;
+  texcoord : vec2<f32>,
   @location(3)
-  texcoord2 : vec2<f32>;
+  texcoord2 : vec2<f32>,
   @location(4)
-  color : vec4<f32>;
+  color : vec4<f32>,
   @location(5)
-  instanceColor : vec4<f32>;
+  instanceColor : vec4<f32>,
   @location(6)
-  normal : vec3<f32>;
+  normal : vec3<f32>,
   @location(7)
-  tangent : vec3<f32>;
+  tangent : vec3<f32>,
   @location(8)
-  bitangent : vec3<f32>;
+  bitangent : vec3<f32>,
 }
 
 struct Material {
-  baseColorFactor : vec4<f32>;
-  emissiveFactor : vec3<f32>;
-  occlusionStrength : f32;
-  metallicRoughnessFactor : vec2<f32>;
-  alphaCutoff : f32;
+  baseColorFactor : vec4<f32>,
+  emissiveFactor : vec3<f32>,
+  occlusionStrength : f32,
+  metallicRoughnessFactor : vec2<f32>,
+  alphaCutoff : f32,
 }
 
 @binding(8) @group(0) var<uniform> material : Material;
@@ -209,15 +209,15 @@
 @binding(18) @group(0) var emissiveSampler : sampler;
 
 struct SurfaceInfo {
-  baseColor : vec4<f32>;
-  albedo : vec3<f32>;
-  metallic : f32;
-  roughness : f32;
-  normal : vec3<f32>;
-  f0 : vec3<f32>;
-  ao : f32;
-  emissive : vec3<f32>;
-  v : vec3<f32>;
+  baseColor : vec4<f32>,
+  albedo : vec3<f32>,
+  metallic : f32,
+  roughness : f32,
+  normal : vec3<f32>,
+  f0 : vec3<f32>,
+  ao : f32,
+  emissive : vec3<f32>,
+  v : vec3<f32>,
 }
 
 fn GetSurfaceInfo(input : VertexOutput) -> SurfaceInfo {
@@ -258,11 +258,11 @@
 let LightType_Directional = 2u;
 
 struct PuctualLight {
-  lightType : u32;
-  pointToLight : vec3<f32>;
-  range : f32;
-  color : vec3<f32>;
-  intensity : f32;
+  lightType : u32,
+  pointToLight : vec3<f32>,
+  range : f32,
+  color : vec3<f32>,
+  intensity : f32,
 }
 
 fn FresnelSchlick(cosTheta : f32, F0 : vec3<f32>) -> vec3<f32> {
@@ -325,9 +325,9 @@
 
 struct FragmentOutput {
   @location(0)
-  color : vec4<f32>;
+  color : vec4<f32>,
   @location(1)
-  emissive : vec4<f32>;
+  emissive : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl b/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl
index 5230459..593ba23 100644
--- a/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl
+++ b/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl
@@ -1,60 +1,60 @@
 struct VertexInput {
   @location(0)
-  position : vec4<f32>;
+  position : vec4<f32>,
   @location(1)
-  normal : vec3<f32>;
+  normal : vec3<f32>,
   @location(2)
-  tangent : vec4<f32>;
+  tangent : vec4<f32>,
   @location(3)
-  texcoord : vec2<f32>;
+  texcoord : vec2<f32>,
   @location(6)
-  joints : vec4<u32>;
+  joints : vec4<u32>,
   @location(7)
-  weights : vec4<f32>;
+  weights : vec4<f32>,
   @location(8)
-  instance0 : vec4<f32>;
+  instance0 : vec4<f32>,
   @location(9)
-  instance1 : vec4<f32>;
+  instance1 : vec4<f32>,
   @location(10)
-  instance2 : vec4<f32>;
+  instance2 : vec4<f32>,
   @location(11)
-  instance3 : vec4<f32>;
+  instance3 : vec4<f32>,
   @location(12)
-  instanceColor : vec4<f32>;
+  instanceColor : vec4<f32>,
 }
 
 struct VertexOutput {
   @builtin(position)
-  position : vec4<f32>;
+  position : vec4<f32>,
   @location(0)
-  worldPos : vec3<f32>;
+  worldPos : vec3<f32>,
   @location(1)
-  view : vec3<f32>;
+  view : vec3<f32>,
   @location(2)
-  texcoord : vec2<f32>;
+  texcoord : vec2<f32>,
   @location(3)
-  texcoord2 : vec2<f32>;
+  texcoord2 : vec2<f32>,
   @location(4)
-  color : vec4<f32>;
+  color : vec4<f32>,
   @location(5)
-  instanceColor : vec4<f32>;
+  instanceColor : vec4<f32>,
   @location(6)
-  normal : vec3<f32>;
+  normal : vec3<f32>,
   @location(7)
-  tangent : vec3<f32>;
+  tangent : vec3<f32>,
   @location(8)
-  bitangent : vec3<f32>;
+  bitangent : vec3<f32>,
 }
 
 struct Camera {
-  projection : mat4x4<f32>;
-  inverseProjection : mat4x4<f32>;
-  view : mat4x4<f32>;
-  position : vec3<f32>;
-  time : f32;
-  outputSize : vec2<f32>;
-  zNear : f32;
-  zFar : f32;
+  projection : mat4x4<f32>,
+  inverseProjection : mat4x4<f32>,
+  view : mat4x4<f32>,
+  position : vec3<f32>,
+  time : f32,
+  outputSize : vec2<f32>,
+  zNear : f32,
+  zFar : f32,
 }
 
 @binding(0) @group(0) var<uniform> camera : Camera;
@@ -64,7 +64,7 @@
 }
 
 struct Joints {
-  matrices : array<mat4x4<f32>>;
+  matrices : array<mat4x4<f32>>,
 }
 
 @binding(1) @group(0) var<storage, read> joint : Joints;
diff --git a/test/tint/buffer/storage/dynamic_index/read.wgsl b/test/tint/buffer/storage/dynamic_index/read.wgsl
index 5cd0316..d46694a 100644
--- a/test/tint/buffer/storage/dynamic_index/read.wgsl
+++ b/test/tint/buffer/storage/dynamic_index/read.wgsl
@@ -1,17 +1,17 @@
 struct Inner {
-    a : vec3<i32>;
-    b : i32;
-    c : vec3<u32>;
-    d : u32;
-    e : vec3<f32>;
-    f : f32;
-    g : mat2x3<f32>;
-    h : mat3x2<f32>;
-    i : array<vec4<i32>, 4>;
+    a : vec3<i32>,
+    b : i32,
+    c : vec3<u32>,
+    d : u32,
+    e : vec3<f32>,
+    f : f32,
+    g : mat2x3<f32>,
+    h : mat3x2<f32>,
+    i : array<vec4<i32>, 4>,
 };
 
 struct S {
-    arr : array<Inner>;
+    arr : array<Inner>,
 };
 
 @binding(0) @group(0) var<storage, read> s : S;
diff --git a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.wgsl b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.wgsl
index f9c274c..ddfe806 100644
--- a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct Inner {
-  a : vec3<i32>;
-  b : i32;
-  c : vec3<u32>;
-  d : u32;
-  e : vec3<f32>;
-  f : f32;
-  g : mat2x3<f32>;
-  h : mat3x2<f32>;
-  i : array<vec4<i32>, 4>;
+  a : vec3<i32>,
+  b : i32,
+  c : vec3<u32>,
+  d : u32,
+  e : vec3<f32>,
+  f : f32,
+  g : mat2x3<f32>,
+  h : mat3x2<f32>,
+  i : array<vec4<i32>, 4>,
 }
 
 struct S {
-  arr : array<Inner>;
+  arr : array<Inner>,
 }
 
 @binding(0) @group(0) var<storage, read> s : S;
diff --git a/test/tint/buffer/storage/dynamic_index/write.wgsl b/test/tint/buffer/storage/dynamic_index/write.wgsl
index 4167c1e..03980d5 100644
--- a/test/tint/buffer/storage/dynamic_index/write.wgsl
+++ b/test/tint/buffer/storage/dynamic_index/write.wgsl
@@ -1,17 +1,17 @@
 struct Inner {
-    a : vec3<i32>;
-    b : i32;
-    c : vec3<u32>;
-    d : u32;
-    e : vec3<f32>;
-    f : f32;
-    g : mat2x3<f32>;
-    h : mat3x2<f32>;
-    i : array<vec4<i32>, 4>;
+    a : vec3<i32>,
+    b : i32,
+    c : vec3<u32>,
+    d : u32,
+    e : vec3<f32>,
+    f : f32,
+    g : mat2x3<f32>,
+    h : mat3x2<f32>,
+    i : array<vec4<i32>, 4>,
 };
 
 struct S {
-    arr : array<Inner>;
+    arr : array<Inner>,
 };
 
 @binding(0) @group(0) var<storage, read_write> s : S;
diff --git a/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.wgsl b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.wgsl
index 661916d..dc76bc0 100644
--- a/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct Inner {
-  a : vec3<i32>;
-  b : i32;
-  c : vec3<u32>;
-  d : u32;
-  e : vec3<f32>;
-  f : f32;
-  g : mat2x3<f32>;
-  h : mat3x2<f32>;
-  i : array<vec4<i32>, 4>;
+  a : vec3<i32>,
+  b : i32,
+  c : vec3<u32>,
+  d : u32,
+  e : vec3<f32>,
+  f : f32,
+  g : mat2x3<f32>,
+  h : mat3x2<f32>,
+  i : array<vec4<i32>, 4>,
 }
 
 struct S {
-  arr : array<Inner>;
+  arr : array<Inner>,
 }
 
 @binding(0) @group(0) var<storage, read_write> s : S;
diff --git a/test/tint/buffer/storage/static_index/read.wgsl b/test/tint/buffer/storage/static_index/read.wgsl
index 06ea57e..fb56a9c 100644
--- a/test/tint/buffer/storage/static_index/read.wgsl
+++ b/test/tint/buffer/storage/static_index/read.wgsl
@@ -1,18 +1,18 @@
 struct Inner {
-    x : i32;
+    x : i32,
 };
 
 struct S {
-    a : vec3<i32>;
-    b : i32;
-    c : vec3<u32>;
-    d : u32;
-    e : vec3<f32>;
-    f : f32;
-    g : mat2x3<f32>;
-    h : mat3x2<f32>;
-    i : Inner;
-    j : array<Inner, 4>;
+    a : vec3<i32>,
+    b : i32,
+    c : vec3<u32>,
+    d : u32,
+    e : vec3<f32>,
+    f : f32,
+    g : mat2x3<f32>,
+    h : mat3x2<f32>,
+    i : Inner,
+    j : array<Inner, 4>,
 };
 
 @binding(0) @group(0) var<storage, read> s : S;
diff --git a/test/tint/buffer/storage/static_index/read.wgsl.expected.wgsl b/test/tint/buffer/storage/static_index/read.wgsl.expected.wgsl
index 6c48125..6a5f32b 100644
--- a/test/tint/buffer/storage/static_index/read.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/static_index/read.wgsl.expected.wgsl
@@ -1,18 +1,18 @@
 struct Inner {
-  x : i32;
+  x : i32,
 }
 
 struct S {
-  a : vec3<i32>;
-  b : i32;
-  c : vec3<u32>;
-  d : u32;
-  e : vec3<f32>;
-  f : f32;
-  g : mat2x3<f32>;
-  h : mat3x2<f32>;
-  i : Inner;
-  j : array<Inner, 4>;
+  a : vec3<i32>,
+  b : i32,
+  c : vec3<u32>,
+  d : u32,
+  e : vec3<f32>,
+  f : f32,
+  g : mat2x3<f32>,
+  h : mat3x2<f32>,
+  i : Inner,
+  j : array<Inner, 4>,
 }
 
 @binding(0) @group(0) var<storage, read> s : S;
diff --git a/test/tint/buffer/storage/static_index/write.wgsl b/test/tint/buffer/storage/static_index/write.wgsl
index 47827bf..d9c16cf 100644
--- a/test/tint/buffer/storage/static_index/write.wgsl
+++ b/test/tint/buffer/storage/static_index/write.wgsl
@@ -1,18 +1,18 @@
 struct Inner {
-    x : i32;
+    x : i32,
 };
 
 struct S {
-    a : vec3<i32>;
-    b : i32;
-    c : vec3<u32>;
-    d : u32;
-    e : vec3<f32>;
-    f : f32;
-    g : mat2x3<f32>;
-    h : mat3x2<f32>;
-    i : Inner;
-    j : array<Inner, 4>;
+    a : vec3<i32>,
+    b : i32,
+    c : vec3<u32>,
+    d : u32,
+    e : vec3<f32>,
+    f : f32,
+    g : mat2x3<f32>,
+    h : mat3x2<f32>,
+    i : Inner,
+    j : array<Inner, 4>,
 };
 
 @binding(0) @group(0) var<storage, write> s : S;
diff --git a/test/tint/buffer/storage/static_index/write.wgsl.expected.wgsl b/test/tint/buffer/storage/static_index/write.wgsl.expected.wgsl
index 68a73e0..74e5902 100644
--- a/test/tint/buffer/storage/static_index/write.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/static_index/write.wgsl.expected.wgsl
@@ -1,18 +1,18 @@
 struct Inner {
-  x : i32;
+  x : i32,
 }
 
 struct S {
-  a : vec3<i32>;
-  b : i32;
-  c : vec3<u32>;
-  d : u32;
-  e : vec3<f32>;
-  f : f32;
-  g : mat2x3<f32>;
-  h : mat3x2<f32>;
-  i : Inner;
-  j : array<Inner, 4>;
+  a : vec3<i32>,
+  b : i32,
+  c : vec3<u32>,
+  d : u32,
+  e : vec3<f32>,
+  f : f32,
+  g : mat2x3<f32>,
+  h : mat3x2<f32>,
+  i : Inner,
+  j : array<Inner, 4>,
 }
 
 @binding(0) @group(0) var<storage, write> s : S;
diff --git a/test/tint/buffer/storage/types/runtime_array.wgsl b/test/tint/buffer/storage/types/runtime_array.wgsl
index 083ea11..156fd68 100644
--- a/test/tint/buffer/storage/types/runtime_array.wgsl
+++ b/test/tint/buffer/storage/types/runtime_array.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  f : f32;
+  f : f32,
 };
 
 @group(0) @binding(0)
diff --git a/test/tint/buffer/storage/types/runtime_array.wgsl.expected.wgsl b/test/tint/buffer/storage/types/runtime_array.wgsl.expected.wgsl
index 4b87ea6..5ceee23 100644
--- a/test/tint/buffer/storage/types/runtime_array.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/runtime_array.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @group(0) @binding(0) var<storage, read> in : array<S>;
diff --git a/test/tint/buffer/storage/types/struct.wgsl b/test/tint/buffer/storage/types/struct.wgsl
index 993b052..57ad78a 100644
--- a/test/tint/buffer/storage/types/struct.wgsl
+++ b/test/tint/buffer/storage/types/struct.wgsl
@@ -1,8 +1,8 @@
 struct Inner {
-  f : f32;
+  f : f32,
 };
 struct S {
-  inner : Inner;
+  inner : Inner,
 };
 
 @group(0) @binding(0)
diff --git a/test/tint/buffer/storage/types/struct.wgsl.expected.wgsl b/test/tint/buffer/storage/types/struct.wgsl.expected.wgsl
index 59d3bc9..553d4b7 100644
--- a/test/tint/buffer/storage/types/struct.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/struct.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct Inner {
-  f : f32;
+  f : f32,
 }
 
 struct S {
-  inner : Inner;
+  inner : Inner,
 }
 
 @group(0) @binding(0) var<storage, read> in : S;
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl b/test/tint/buffer/uniform/dynamic_index/read.wgsl
index d5b7564..6057810 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl
@@ -1,19 +1,19 @@
 struct Inner {
-    a : vec3<i32>;
-    b : i32;
-    c : vec3<u32>;
-    d : u32;
-    e : vec3<f32>;
-    f : f32;
-    g : vec2<i32>;
-    h : vec2<i32>;
-    i : mat2x3<f32>;
-    @align(16) j : mat3x2<f32>;
-    @align(16) k : array<vec4<i32>, 4>;
+    a : vec3<i32>,
+    b : i32,
+    c : vec3<u32>,
+    d : u32,
+    e : vec3<f32>,
+    f : f32,
+    g : vec2<i32>,
+    h : vec2<i32>,
+    i : mat2x3<f32>,
+    @align(16) j : mat3x2<f32>,
+    @align(16) k : array<vec4<i32>, 4>,
 };
 
 struct S {
-    arr : array<Inner, 8>;
+    arr : array<Inner, 8>,
 };
 
 @binding(0) @group(0) var<uniform> s : S;
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
index dbf4c9e..486b22b 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 struct Inner {
-  a : vec3<i32>;
-  b : i32;
-  c : vec3<u32>;
-  d : u32;
-  e : vec3<f32>;
-  f : f32;
-  g : vec2<i32>;
-  h : vec2<i32>;
-  i : mat2x3<f32>;
+  a : vec3<i32>,
+  b : i32,
+  c : vec3<u32>,
+  d : u32,
+  e : vec3<f32>,
+  f : f32,
+  g : vec2<i32>,
+  h : vec2<i32>,
+  i : mat2x3<f32>,
   @align(16)
-  j : mat3x2<f32>;
+  j : mat3x2<f32>,
   @align(16)
-  k : array<vec4<i32>, 4>;
+  k : array<vec4<i32>, 4>,
 }
 
 struct S {
-  arr : array<Inner, 8>;
+  arr : array<Inner, 8>,
 }
 
 @binding(0) @group(0) var<uniform> s : S;
diff --git a/test/tint/buffer/uniform/static_index/read.wgsl b/test/tint/buffer/uniform/static_index/read.wgsl
index 6a27ee9..85552f3 100644
--- a/test/tint/buffer/uniform/static_index/read.wgsl
+++ b/test/tint/buffer/uniform/static_index/read.wgsl
@@ -1,20 +1,20 @@
 struct Inner {
-    @size(16) x : i32;
+    @size(16) x : i32,
 };
 
 struct S {
-    a : vec3<i32>;
-    b : i32;
-    c : vec3<u32>;
-    d : u32;
-    e : vec3<f32>;
-    f : f32;
-    g : vec2<i32>;
-    h : vec2<i32>;
-    i : mat2x3<f32>;
-    j : mat3x2<f32>;
-    @align(16) k : Inner;
-    @align(16) l : array<Inner, 4>;
+    a : vec3<i32>,
+    b : i32,
+    c : vec3<u32>,
+    d : u32,
+    e : vec3<f32>,
+    f : f32,
+    g : vec2<i32>,
+    h : vec2<i32>,
+    i : mat2x3<f32>,
+    j : mat3x2<f32>,
+    @align(16) k : Inner,
+    @align(16) l : array<Inner, 4>,
 };
 
 @binding(0) @group(0) var<uniform> s : S;
diff --git a/test/tint/buffer/uniform/static_index/read.wgsl.expected.wgsl b/test/tint/buffer/uniform/static_index/read.wgsl.expected.wgsl
index e23dc3b..eb0a0f1 100644
--- a/test/tint/buffer/uniform/static_index/read.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/static_index/read.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
 struct Inner {
   @size(16)
-  x : i32;
+  x : i32,
 }
 
 struct S {
-  a : vec3<i32>;
-  b : i32;
-  c : vec3<u32>;
-  d : u32;
-  e : vec3<f32>;
-  f : f32;
-  g : vec2<i32>;
-  h : vec2<i32>;
-  i : mat2x3<f32>;
-  j : mat3x2<f32>;
+  a : vec3<i32>,
+  b : i32,
+  c : vec3<u32>,
+  d : u32,
+  e : vec3<f32>,
+  f : f32,
+  g : vec2<i32>,
+  h : vec2<i32>,
+  i : mat2x3<f32>,
+  j : mat3x2<f32>,
   @align(16)
-  k : Inner;
+  k : Inner,
   @align(16)
-  l : array<Inner, 4>;
+  l : array<Inner, 4>,
 }
 
 @binding(0) @group(0) var<uniform> s : S;
diff --git a/test/tint/buffer/uniform/types/struct.wgsl b/test/tint/buffer/uniform/types/struct.wgsl
index 2c6547c..91dbeb1 100644
--- a/test/tint/buffer/uniform/types/struct.wgsl
+++ b/test/tint/buffer/uniform/types/struct.wgsl
@@ -1,8 +1,8 @@
 struct Inner {
-  f : f32;
+  f : f32,
 };
 struct S {
-  inner : Inner;
+  inner : Inner,
 };
 
 @group(0) @binding(0)
diff --git a/test/tint/buffer/uniform/types/struct.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/struct.wgsl.expected.wgsl
index f564832..745979d 100644
--- a/test/tint/buffer/uniform/types/struct.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/struct.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct Inner {
-  f : f32;
+  f : f32,
 }
 
 struct S {
-  inner : Inner;
+  inner : Inner,
 }
 
 @group(0) @binding(0) var<uniform> u : S;
diff --git a/test/tint/bug/chromium/1251009.wgsl b/test/tint/bug/chromium/1251009.wgsl
index 7a057c0..436cd2f 100644
--- a/test/tint/bug/chromium/1251009.wgsl
+++ b/test/tint/bug/chromium/1251009.wgsl
@@ -1,10 +1,10 @@
 struct VertexInputs0 {
-  @builtin(vertex_index) vertex_index : u32;
-  @location(0) loc0 : i32;
+  @builtin(vertex_index) vertex_index : u32,
+  @location(0) loc0 : i32,
 };
 struct VertexInputs1 {
-  @location(2) loc1 : u32;
-  @location(3) loc3 : vec4<f32>;
+  @location(2) loc1 : u32,
+  @location(3) loc3 : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/bug/chromium/1251009.wgsl.expected.wgsl b/test/tint/bug/chromium/1251009.wgsl.expected.wgsl
index f761f69..745618e 100644
--- a/test/tint/bug/chromium/1251009.wgsl.expected.wgsl
+++ b/test/tint/bug/chromium/1251009.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct VertexInputs0 {
   @builtin(vertex_index)
-  vertex_index : u32;
+  vertex_index : u32,
   @location(0)
-  loc0 : i32;
+  loc0 : i32,
 }
 
 struct VertexInputs1 {
   @location(2)
-  loc1 : u32;
+  loc1 : u32,
   @location(3)
-  loc3 : vec4<f32>;
+  loc3 : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/bug/chromium/1273230.wgsl b/test/tint/bug/chromium/1273230.wgsl
index d2f0569..4fcf8f9 100644
--- a/test/tint/bug/chromium/1273230.wgsl
+++ b/test/tint/bug/chromium/1273230.wgsl
@@ -8,47 +8,47 @@
 
 }
 struct Uniforms {
-  numTriangles : u32;
-  gridSize : u32;
-  puuuuuuuuuuuuuuuuad1 : u32;
-  pad2 : u32;
-  bbMin : vec3<f32>;
-  bbMax : vec3<f32>;
+  numTriangles : u32,
+  gridSize : u32,
+  puuuuuuuuuuuuuuuuad1 : u32,
+  pad2 : u32,
+  bbMin : vec3<f32>,
+  bbMax : vec3<f32>,
 };
 
 struct Dbg {
-  offsetCounter : atomic<u32>;
-  pad0 : u32;
-  pad1 : u32;
-  pad2 : u32;
-  value0 : u32;
-  value1 : u32;
-  value2 : u32;
-  value3 : u32;
-  value_f32_0 : f32;
-  value_f32_1 : f32;
-  value_f32_2 : f32;
-  value_f32_3 : f32;
+  offsetCounter : atomic<u32>,
+  pad0 : u32,
+  pad1 : u32,
+  pad2 : u32,
+  value0 : u32,
+  value1 : u32,
+  value2 : u32,
+  value3 : u32,
+  value_f32_0 : f32,
+  value_f32_1 : f32,
+  value_f32_2 : f32,
+  value_f32_3 : f32,
 };
 
 struct F32s {
-  values : array<f32>;
+  values : array<f32>,
 };
 
 struct U32s {
-  values : array<u32>;
+  values : array<u32>,
 };
 
 struct I32s {
-  values : array<i32>;
+  values : array<i32>,
 };
 
 struct AU32s {
-  values : array<atomic<u32>>;
+  values : array<atomic<u32>>,
 };
 
 struct AI32s {
-  values : array<atomic<i32>>;
+  values : array<atomic<i32>>,
 };
 
 @binding(0) @group(0) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/chromium/1273230.wgsl.expected.wgsl b/test/tint/bug/chromium/1273230.wgsl.expected.wgsl
index 2ca3277..165ae07 100644
--- a/test/tint/bug/chromium/1273230.wgsl.expected.wgsl
+++ b/test/tint/bug/chromium/1273230.wgsl.expected.wgsl
@@ -5,47 +5,47 @@
 }
 
 struct Uniforms {
-  numTriangles : u32;
-  gridSize : u32;
-  puuuuuuuuuuuuuuuuad1 : u32;
-  pad2 : u32;
-  bbMin : vec3<f32>;
-  bbMax : vec3<f32>;
+  numTriangles : u32,
+  gridSize : u32,
+  puuuuuuuuuuuuuuuuad1 : u32,
+  pad2 : u32,
+  bbMin : vec3<f32>,
+  bbMax : vec3<f32>,
 }
 
 struct Dbg {
-  offsetCounter : atomic<u32>;
-  pad0 : u32;
-  pad1 : u32;
-  pad2 : u32;
-  value0 : u32;
-  value1 : u32;
-  value2 : u32;
-  value3 : u32;
-  value_f32_0 : f32;
-  value_f32_1 : f32;
-  value_f32_2 : f32;
-  value_f32_3 : f32;
+  offsetCounter : atomic<u32>,
+  pad0 : u32,
+  pad1 : u32,
+  pad2 : u32,
+  value0 : u32,
+  value1 : u32,
+  value2 : u32,
+  value3 : u32,
+  value_f32_0 : f32,
+  value_f32_1 : f32,
+  value_f32_2 : f32,
+  value_f32_3 : f32,
 }
 
 struct F32s {
-  values : array<f32>;
+  values : array<f32>,
 }
 
 struct U32s {
-  values : array<u32>;
+  values : array<u32>,
 }
 
 struct I32s {
-  values : array<i32>;
+  values : array<i32>,
 }
 
 struct AU32s {
-  values : array<atomic<u32>>;
+  values : array<atomic<u32>>,
 }
 
 struct AI32s {
-  values : array<atomic<i32>>;
+  values : array<atomic<i32>>,
 }
 
 @binding(0) @group(0) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/chromium/1273451.wgsl b/test/tint/bug/chromium/1273451.wgsl
index 2289c10..494ae8f 100644
--- a/test/tint/bug/chromium/1273451.wgsl
+++ b/test/tint/bug/chromium/1273451.wgsl
@@ -1,9 +1,9 @@
 struct A {
-  a : i32;
+  a : i32,
 };
 
 struct B {
-  b : i32;
+  b : i32,
 };
 
 fn f(a : A) -> B {
diff --git a/test/tint/bug/chromium/1273451.wgsl.expected.wgsl b/test/tint/bug/chromium/1273451.wgsl.expected.wgsl
index d12f298..9465890 100644
--- a/test/tint/bug/chromium/1273451.wgsl.expected.wgsl
+++ b/test/tint/bug/chromium/1273451.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct A {
-  a : i32;
+  a : i32,
 }
 
 struct B {
-  b : i32;
+  b : i32,
 }
 
 fn f(a : A) -> B {
diff --git a/test/tint/bug/chromium/1290107.wgsl b/test/tint/bug/chromium/1290107.wgsl
index c2e4778..22899ad 100644
--- a/test/tint/bug/chromium/1290107.wgsl
+++ b/test/tint/bug/chromium/1290107.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @group(0) @binding(0) var<storage, read> arr : array<S>;
diff --git a/test/tint/bug/chromium/1290107.wgsl.expected.wgsl b/test/tint/bug/chromium/1290107.wgsl.expected.wgsl
index 4041cef..99d1abb 100644
--- a/test/tint/bug/chromium/1290107.wgsl.expected.wgsl
+++ b/test/tint/bug/chromium/1290107.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  f : f32;
+  f : f32,
 }
 
 @group(0) @binding(0) var<storage, read> arr : array<S>;
diff --git a/test/tint/bug/dawn/947.wgsl b/test/tint/bug/dawn/947.wgsl
index fe12948..deeb467 100644
--- a/test/tint/bug/dawn/947.wgsl
+++ b/test/tint/bug/dawn/947.wgsl
@@ -1,12 +1,12 @@
  struct Uniforms {

-    u_scale : vec2<f32>;

-    u_offset : vec2<f32>;

+    u_scale : vec2<f32>,

+    u_offset : vec2<f32>,

 };

 @binding(0) @group(0) var<uniform> uniforms : Uniforms;

 

 struct VertexOutputs {

-    @location(0) texcoords : vec2<f32>;

-    @builtin(position) position : vec4<f32>;

+    @location(0) texcoords : vec2<f32>,

+    @builtin(position) position : vec4<f32>,

 };

 

 @stage(vertex) fn vs_main(

diff --git a/test/tint/bug/dawn/947.wgsl.expected.wgsl b/test/tint/bug/dawn/947.wgsl.expected.wgsl
index ff78e61..063f354 100644
--- a/test/tint/bug/dawn/947.wgsl.expected.wgsl
+++ b/test/tint/bug/dawn/947.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct Uniforms {
-  u_scale : vec2<f32>;
-  u_offset : vec2<f32>;
+  u_scale : vec2<f32>,
+  u_offset : vec2<f32>,
 }
 
 @binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
 struct VertexOutputs {
   @location(0)
-  texcoords : vec2<f32>;
+  texcoords : vec2<f32>,
   @builtin(position)
-  position : vec4<f32>;
+  position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl
index 55ce8a2..549d267 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl
@@ -1,12 +1,12 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
-  data: array<i32, 64>;
+  data: array<i32, 64>,
 };
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl
index bd5d8d7..74fe168 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
-  data : array<i32, 64>;
+  data : array<i32, 64>,
 }
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl
index 2d7729b..28cf032 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl
@@ -1,12 +1,12 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
-  data: array<i32, 64>;
+  data: array<i32, 64>,
 };
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl
index fd84a46..e8ecf94 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
-  data : array<i32, 64>;
+  data : array<i32, 64>,
 }
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl
index 432c59c..c665d8e 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl
@@ -1,14 +1,14 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(2) var<storage, read_write> result: Result;
 
 struct SSBO {
-  data: array<i32, 4>;
+  data: array<i32, 4>,
 };
 @group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl
index 9fdea5f..82b357d 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(2) var<storage, read_write> result : Result;
 
 struct SSBO {
-  data : array<i32, 4>;
+  data : array<i32, 4>,
 }
 
 @group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl
index d05dd5b..0201af5 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl
@@ -1,10 +1,10 @@
 struct UBO {
-  data: array<vec4<i32>, 4>;
-  dynamic_idx: i32;
+  data: array<vec4<i32>, 4>,
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(2) var<storage, read_write> result: Result;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl
index 0dbf26b..1a0f804 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
 struct UBO {
-  data : array<vec4<i32>, 4>;
-  dynamic_idx : i32;
+  data : array<vec4<i32>, 4>,
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(2) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl
index 024506f..44d7f1e 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl
@@ -1,12 +1,12 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
-  data: array<i32, 64>;
+  data: array<i32, 64>,
 };
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl
index 9427391..35d672a 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
-  data : array<i32, 64>;
+  data : array<i32, 64>,
 }
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl
index b183971..f8b1cbb 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl
@@ -1,12 +1,12 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
-  data: array<i32, 64>;
+  data: array<i32, 64>,
 };
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl
index 1504f92..4d3b911 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
-  data : array<i32, 64>;
+  data : array<i32, 64>,
 }
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl
index 4a5bc5f..4fcf160 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl
@@ -1,12 +1,12 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
-  data: array<i32, 64>;
+  data: array<i32, 64>,
 };
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl
index 52bbcc4..79b2222 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
-  data : array<i32, 64>;
+  data : array<i32, 64>,
 }
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl
index 2720426..c86094a 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl
@@ -1,12 +1,12 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
-  data: array<i32, 64>;
+  data: array<i32, 64>,
 };
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl
index d4c7b0e..31d7c74 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
-  data : array<i32, 64>;
+  data : array<i32, 64>,
 }
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl
index c123fe7..94329c6 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl
@@ -1,12 +1,12 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
-  data: array<i32, 64>;
+  data: array<i32, 64>,
 };
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl
index d4d329f..9724ec0 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
-  data : array<i32, 64>;
+  data : array<i32, 64>,
 }
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl
index 9e4babe..f0204ba 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl
@@ -1,14 +1,14 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(2) var<storage, read_write> result: Result;
 
 struct SSBO {
-  data: array<i32, 4>;
+  data: array<i32, 4>,
 };
 @group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl
index 2f5ce76..942aea7 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(2) var<storage, read_write> result : Result;
 
 struct SSBO {
-  data : array<i32, 4>;
+  data : array<i32, 4>,
 }
 
 @group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl
index 961f020..8aa0ab3 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl
@@ -1,12 +1,12 @@
 struct UBO {
-  dynamic_idx: i32;
+  dynamic_idx: i32,
 };
 @group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
-  data: array<i32, 64>;
+  data: array<i32, 64>,
 };
 struct Result {
-  out: i32;
+  out: i32,
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl
index f0026f9..59c68f2 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct UBO {
-  dynamic_idx : i32;
+  dynamic_idx : i32,
 }
 
 @group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
-  data : array<i32, 64>;
+  data : array<i32, 64>,
 }
 
 struct Result {
-  out : i32;
+  out : i32,
 }
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl
index 773dd61..e439d78 100644
--- a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl
@@ -1,16 +1,16 @@
 struct Simulation {

-  i : u32;

+  i : u32,

 };

 

 struct Particle {

-  position : array<vec3<f32>, 8>;

-  lifetime : f32;

-  color    : vec4<f32>;

-  velocity : vec3<f32>;

+  position : array<vec3<f32>, 8>,

+  lifetime : f32,

+  color    : vec4<f32>,

+  velocity : vec3<f32>,

 };

 

 struct Particles {

-  p : array<Particle>;

+  p : array<Particle>,

 };

 

 @group(1) @binding(3) var<storage, read> particles : Particles;

diff --git a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl
index df8979b..25f718b 100644
--- a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl
@@ -1,16 +1,16 @@
 struct Simulation {
-  i : u32;
+  i : u32,
 }
 
 struct Particle {
-  position : array<vec3<f32>, 8>;
-  lifetime : f32;
-  color : vec4<f32>;
-  velocity : vec3<f32>;
+  position : array<vec3<f32>, 8>,
+  lifetime : f32,
+  color : vec4<f32>,
+  velocity : vec3<f32>,
 }
 
 struct Particles {
-  p : array<Particle>;
+  p : array<Particle>,
 }
 
 @group(1) @binding(3) var<storage, read> particles : Particles;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl
index 30627d8..6168492 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl
@@ -1,6 +1,6 @@
  struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl
index 9f79724..03abbbb 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl
index e72acfe..4321cfe 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl
@@ -1,6 +1,6 @@
  struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl
index 9847626..76c2e48 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl
index 87d95ad..d40d4e5 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl
@@ -1,6 +1,6 @@
  struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl
index 0bf7965..f588147 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl
index 8db52b8..de88c76 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl
@@ -1,6 +1,6 @@
  struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl
index 87cf58c..d03625d 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl
index ed33805..70c6a82 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl
@@ -1,6 +1,6 @@
  struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl
index 8f5c87a..4f4c665 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl
index c7e750e..4cffbb2 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl
@@ -1,6 +1,6 @@
  struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl
index 6419eb2..931ae51 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl
index 87d95ad..d40d4e5 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl
@@ -1,6 +1,6 @@
  struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl
index 0bf7965..f588147 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl
index 88338a5..7fab9b7 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl
@@ -1,6 +1,6 @@
  struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl
index 3642ca8..913ff02 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/tint/1046.wgsl b/test/tint/bug/tint/1046.wgsl
index 40eeee6..4acfe95 100644
--- a/test/tint/bug/tint/1046.wgsl
+++ b/test/tint/bug/tint/1046.wgsl
@@ -1,18 +1,18 @@
 
 struct PointLight {
-    position : vec4<f32>;
+    position : vec4<f32>,
 };
 
  struct PointLights {
-    values : array<PointLight>;
+    values : array<PointLight>,
 };
 
  struct Uniforms {
-    worldView : mat4x4<f32>;
-    proj : mat4x4<f32>;
-    numPointLights : u32;
-    color_source : u32;
-    color : vec4<f32>;
+    worldView : mat4x4<f32>,
+    proj : mat4x4<f32>,
+    numPointLights : u32,
+    color_source : u32,
+    color : vec4<f32>,
 };
 
 @binding(0) @group(0) var<uniform> uniforms : Uniforms;
@@ -21,15 +21,15 @@
 @binding(3) @group(0) var myTexture: texture_2d<f32>;
 
 struct FragmentInput {
-    @builtin(position) position  : vec4<f32>;
-    @location(0) view_position   : vec4<f32>;
-    @location(1) normal          : vec4<f32>;
-    @location(2) uv              : vec2<f32>;
-    @location(3) color           : vec4<f32>;
+    @builtin(position) position  : vec4<f32>,
+    @location(0) view_position   : vec4<f32>,
+    @location(1) normal          : vec4<f32>,
+    @location(2) uv              : vec2<f32>,
+    @location(3) color           : vec4<f32>,
 };
 
 struct FragmentOutput {
-    @location(0) color : vec4<f32>;
+    @location(0) color : vec4<f32>,
 };
 
 fn getColor(fragment : FragmentInput) -> vec4<f32>{
diff --git a/test/tint/bug/tint/1046.wgsl.expected.wgsl b/test/tint/bug/tint/1046.wgsl.expected.wgsl
index f7ef8d8..430eb9d 100644
--- a/test/tint/bug/tint/1046.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1046.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct PointLight {
-  position : vec4<f32>;
+  position : vec4<f32>,
 }
 
 struct PointLights {
-  values : array<PointLight>;
+  values : array<PointLight>,
 }
 
 struct Uniforms {
-  worldView : mat4x4<f32>;
-  proj : mat4x4<f32>;
-  numPointLights : u32;
-  color_source : u32;
-  color : vec4<f32>;
+  worldView : mat4x4<f32>,
+  proj : mat4x4<f32>,
+  numPointLights : u32,
+  color_source : u32,
+  color : vec4<f32>,
 }
 
 @binding(0) @group(0) var<uniform> uniforms : Uniforms;
@@ -24,20 +24,20 @@
 
 struct FragmentInput {
   @builtin(position)
-  position : vec4<f32>;
+  position : vec4<f32>,
   @location(0)
-  view_position : vec4<f32>;
+  view_position : vec4<f32>,
   @location(1)
-  normal : vec4<f32>;
+  normal : vec4<f32>,
   @location(2)
-  uv : vec2<f32>;
+  uv : vec2<f32>,
   @location(3)
-  color : vec4<f32>;
+  color : vec4<f32>,
 }
 
 struct FragmentOutput {
   @location(0)
-  color : vec4<f32>;
+  color : vec4<f32>,
 }
 
 fn getColor(fragment : FragmentInput) -> vec4<f32> {
diff --git a/test/tint/bug/tint/1076.wgsl b/test/tint/bug/tint/1076.wgsl
index efa85b8..4ce9001 100644
--- a/test/tint/bug/tint/1076.wgsl
+++ b/test/tint/bug/tint/1076.wgsl
@@ -1,6 +1,6 @@
 struct FragIn {
-  @location(0) a : f32;
-  @builtin(sample_mask) mask : u32;
+  @location(0) a : f32,
+  @builtin(sample_mask) mask : u32,
 };
 
 @stage(fragment)
diff --git a/test/tint/bug/tint/1076.wgsl.expected.wgsl b/test/tint/bug/tint/1076.wgsl.expected.wgsl
index 4be185f..716cb91 100644
--- a/test/tint/bug/tint/1076.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1076.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 struct FragIn {
   @location(0)
-  a : f32;
+  a : f32,
   @builtin(sample_mask)
-  mask : u32;
+  mask : u32,
 }
 
 @stage(fragment)
diff --git a/test/tint/bug/tint/1088.spvasm.expected.wgsl b/test/tint/bug/tint/1088.spvasm.expected.wgsl
index 77f1063..418222d 100644
--- a/test/tint/bug/tint/1088.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/1088.spvasm.expected.wgsl
@@ -2,18 +2,18 @@
 
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr, 4u>;
 
 struct LeftOver {
-  worldViewProjection : mat4x4<f32>;
-  time : f32;
+  worldViewProjection : mat4x4<f32>,
+  time : f32,
   @size(12)
-  padding : u32;
-  test2 : Arr;
-  test : Arr_1;
+  padding : u32,
+  test2 : Arr,
+  test : Arr_1,
 }
 
 var<private> position : vec3<f32>;
@@ -55,9 +55,9 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
   @location(0)
-  vUV_1 : vec2<f32>;
+  vUV_1 : vec2<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/bug/tint/1113.wgsl b/test/tint/bug/tint/1113.wgsl
index 87912ff..1b38021 100644
--- a/test/tint/bug/tint/1113.wgsl
+++ b/test/tint/bug/tint/1113.wgsl
@@ -1,33 +1,33 @@
 
  struct Uniforms {
-    numTriangles     : u32;
-    gridSize         : u32;
-    pad1             : u32;
-    pad2             : u32;
-    bbMin            : vec3<f32>;      // offset(16)
-    bbMax            : vec3<f32>;      // offset(32)
+    numTriangles     : u32,
+    gridSize         : u32,
+    pad1             : u32,
+    pad2             : u32,
+    bbMin            : vec3<f32>,      // offset(16)
+    bbMax            : vec3<f32>,      // offset(32)
 };
 
  struct Dbg {
-    offsetCounter : atomic<u32>;
-    pad0 : u32;
-    pad1 : u32;
-    pad2 : u32;
-    value0 : u32;
-    value1 : u32;
-    value2 : u32;
-    value3 : u32;
-    value_f32_0 : f32;
-    value_f32_1 : f32;
-    value_f32_2 : f32;
-    value_f32_3 : f32;
+    offsetCounter : atomic<u32>,
+    pad0 : u32,
+    pad1 : u32,
+    pad2 : u32,
+    value0 : u32,
+    value1 : u32,
+    value2 : u32,
+    value3 : u32,
+    value_f32_0 : f32,
+    value_f32_1 : f32,
+    value_f32_2 : f32,
+    value_f32_3 : f32,
 };
 
- struct F32s { values : array<f32>; };
- struct U32s { values : array<u32>; };
- struct I32s { values : array<i32>; };
- struct AU32s { values : array<atomic<u32>>; };
- struct AI32s { values : array<atomic<i32>>; };
+ struct F32s { values : array<f32>, }
+ struct U32s { values : array<u32>, }
+ struct I32s { values : array<i32>, }
+ struct AU32s { values : array<atomic<u32>>, }
+ struct AI32s { values : array<atomic<i32>>, }
 
 // IN
 @binding(0) @group(0) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/tint/1113.wgsl.expected.wgsl b/test/tint/bug/tint/1113.wgsl.expected.wgsl
index c709577..187c752 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1113.wgsl.expected.wgsl
@@ -1,45 +1,45 @@
 struct Uniforms {
-  numTriangles : u32;
-  gridSize : u32;
-  pad1 : u32;
-  pad2 : u32;
-  bbMin : vec3<f32>;
-  bbMax : vec3<f32>;
+  numTriangles : u32,
+  gridSize : u32,
+  pad1 : u32,
+  pad2 : u32,
+  bbMin : vec3<f32>,
+  bbMax : vec3<f32>,
 }
 
 struct Dbg {
-  offsetCounter : atomic<u32>;
-  pad0 : u32;
-  pad1 : u32;
-  pad2 : u32;
-  value0 : u32;
-  value1 : u32;
-  value2 : u32;
-  value3 : u32;
-  value_f32_0 : f32;
-  value_f32_1 : f32;
-  value_f32_2 : f32;
-  value_f32_3 : f32;
+  offsetCounter : atomic<u32>,
+  pad0 : u32,
+  pad1 : u32,
+  pad2 : u32,
+  value0 : u32,
+  value1 : u32,
+  value2 : u32,
+  value3 : u32,
+  value_f32_0 : f32,
+  value_f32_1 : f32,
+  value_f32_2 : f32,
+  value_f32_3 : f32,
 }
 
 struct F32s {
-  values : array<f32>;
+  values : array<f32>,
 }
 
 struct U32s {
-  values : array<u32>;
+  values : array<u32>,
 }
 
 struct I32s {
-  values : array<i32>;
+  values : array<i32>,
 }
 
 struct AU32s {
-  values : array<atomic<u32>>;
+  values : array<atomic<u32>>,
 }
 
 struct AI32s {
-  values : array<atomic<i32>>;
+  values : array<atomic<i32>>,
 }
 
 @binding(0) @group(0) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/tint/1118.wgsl b/test/tint/bug/tint/1118.wgsl
index e425324..0e689f1 100644
--- a/test/tint/bug/tint/1118.wgsl
+++ b/test/tint/bug/tint/1118.wgsl
@@ -1,17 +1,17 @@
 struct Scene {

-  vEyePosition : vec4<f32>;

+  vEyePosition : vec4<f32>,

 };

 

 struct Material {

-  vDiffuseColor : vec4<f32>;

-  vAmbientColor : vec3<f32>;

-  dummy: f32;

-  vEmissiveColor : vec3<f32>;

-  dummy2: f32;

+  vDiffuseColor : vec4<f32>,

+  vAmbientColor : vec3<f32>,

+  dummy: f32,

+  vEmissiveColor : vec3<f32>,

+  dummy2: f32,

 };

 

 struct Mesh {

-  visibility : f32;

+  visibility : f32,

 };

 

 var<private> fClipDistance3 : f32;

@@ -105,7 +105,7 @@
 

 struct main_out {

   @location(0)

-  glFragColor_1 : vec4<f32>;

+  glFragColor_1 : vec4<f32>,

 };

 

 @stage(fragment)

diff --git a/test/tint/bug/tint/1118.wgsl.expected.wgsl b/test/tint/bug/tint/1118.wgsl.expected.wgsl
index 78d9666..395ea62 100644
--- a/test/tint/bug/tint/1118.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1118.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct Scene {
-  vEyePosition : vec4<f32>;
+  vEyePosition : vec4<f32>,
 }
 
 struct Material {
-  vDiffuseColor : vec4<f32>;
-  vAmbientColor : vec3<f32>;
-  dummy : f32;
-  vEmissiveColor : vec3<f32>;
-  dummy2 : f32;
+  vDiffuseColor : vec4<f32>,
+  vAmbientColor : vec3<f32>,
+  dummy : f32,
+  vEmissiveColor : vec3<f32>,
+  dummy2 : f32,
 }
 
 struct Mesh {
-  visibility : f32;
+  visibility : f32,
 }
 
 var<private> fClipDistance3 : f32;
@@ -105,7 +105,7 @@
 
 struct main_out {
   @location(0)
-  glFragColor_1 : vec4<f32>;
+  glFragColor_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/bug/tint/1121.wgsl b/test/tint/bug/tint/1121.wgsl
index 24a125b..7e5cfd0 100644
--- a/test/tint/bug/tint/1121.wgsl
+++ b/test/tint/bug/tint/1121.wgsl
@@ -8,40 +8,40 @@
 //   $TILE_SIZE = 16
 
 struct LightData {
-    position : vec4<f32>;
-    color : vec3<f32>;
-    radius : f32;
+    position : vec4<f32>,
+    color : vec3<f32>,
+    radius : f32,
 };
  struct LightsBuffer {
-    lights: array<LightData>;
+    lights: array<LightData>,
 };
 @group(0) @binding(0) var<storage, read_write> lightsBuffer: LightsBuffer;
 struct TileLightIdData {
-    count: atomic<u32>;
-    lightId: array<u32, 64>;
+    count: atomic<u32>,
+    lightId: array<u32, 64>,
 };
  struct Tiles {
-    data: array<TileLightIdData, 4>;
+    data: array<TileLightIdData, 4>,
 };
 @group(1) @binding(0) var<storage, read_write> tileLightId: Tiles;
 
  struct Config {
-    numLights : u32;
-    numTiles : u32;
-    tileCountX : u32;
-    tileCountY : u32;
-    numTileLightSlot : u32;
-    tileSize : u32;
+    numLights : u32,
+    numTiles : u32,
+    tileCountX : u32,
+    tileCountY : u32,
+    numTileLightSlot : u32,
+    tileSize : u32,
 };
 @group(2) @binding(0) var<uniform> config: Config;
  struct Uniforms {
-    min : vec4<f32>;
-    max : vec4<f32>;
+    min : vec4<f32>,
+    max : vec4<f32>,
     // camera
-    viewMatrix : mat4x4<f32>;
-    projectionMatrix : mat4x4<f32>;
+    viewMatrix : mat4x4<f32>,
+    projectionMatrix : mat4x4<f32>,
     // Tile info
-    fullScreenSize : vec4<f32>;    // width, height
+    fullScreenSize : vec4<f32>,    // width, height
 };
 @group(3) @binding(0) var<uniform> uniforms: Uniforms;
 @stage(compute) @workgroup_size(64, 1, 1)
diff --git a/test/tint/bug/tint/1121.wgsl.expected.wgsl b/test/tint/bug/tint/1121.wgsl.expected.wgsl
index 61d81e5..9207245 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.wgsl
@@ -1,43 +1,43 @@
 struct LightData {
-  position : vec4<f32>;
-  color : vec3<f32>;
-  radius : f32;
+  position : vec4<f32>,
+  color : vec3<f32>,
+  radius : f32,
 }
 
 struct LightsBuffer {
-  lights : array<LightData>;
+  lights : array<LightData>,
 }
 
 @group(0) @binding(0) var<storage, read_write> lightsBuffer : LightsBuffer;
 
 struct TileLightIdData {
-  count : atomic<u32>;
-  lightId : array<u32, 64>;
+  count : atomic<u32>,
+  lightId : array<u32, 64>,
 }
 
 struct Tiles {
-  data : array<TileLightIdData, 4>;
+  data : array<TileLightIdData, 4>,
 }
 
 @group(1) @binding(0) var<storage, read_write> tileLightId : Tiles;
 
 struct Config {
-  numLights : u32;
-  numTiles : u32;
-  tileCountX : u32;
-  tileCountY : u32;
-  numTileLightSlot : u32;
-  tileSize : u32;
+  numLights : u32,
+  numTiles : u32,
+  tileCountX : u32,
+  tileCountY : u32,
+  numTileLightSlot : u32,
+  tileSize : u32,
 }
 
 @group(2) @binding(0) var<uniform> config : Config;
 
 struct Uniforms {
-  min : vec4<f32>;
-  max : vec4<f32>;
-  viewMatrix : mat4x4<f32>;
-  projectionMatrix : mat4x4<f32>;
-  fullScreenSize : vec4<f32>;
+  min : vec4<f32>,
+  max : vec4<f32>,
+  viewMatrix : mat4x4<f32>,
+  projectionMatrix : mat4x4<f32>,
+  fullScreenSize : vec4<f32>,
 }
 
 @group(3) @binding(0) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/bug/tint/1136.wgsl b/test/tint/bug/tint/1136.wgsl
index 2fd739e..db03a14 100644
--- a/test/tint/bug/tint/1136.wgsl
+++ b/test/tint/bug/tint/1136.wgsl
@@ -1,3 +1,3 @@
- struct Buffer { data: u32; };
+ struct Buffer { data: u32, };
 @group(0) @binding(0) var<storage, read_write> buffer: Buffer;
 fn main() { buffer.data = buffer.data + 1u;  }
diff --git a/test/tint/bug/tint/1136.wgsl.expected.wgsl b/test/tint/bug/tint/1136.wgsl.expected.wgsl
index d17771a..ee96253 100644
--- a/test/tint/bug/tint/1136.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1136.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct Buffer {
-  data : u32;
+  data : u32,
 }
 
 @group(0) @binding(0) var<storage, read_write> buffer : Buffer;
diff --git a/test/tint/bug/tint/221.wgsl b/test/tint/bug/tint/221.wgsl
index e38a666..3beb8ed 100644
--- a/test/tint/bug/tint/221.wgsl
+++ b/test/tint/bug/tint/221.wgsl
@@ -1,8 +1,8 @@
 type Arr = array<u32, 50>;
 
 struct Buf{
-  count : u32;
-  data : Arr;
+  count : u32,
+  data : Arr,
 };
 
 @group(0) @binding(0) var<storage, read_write> b : Buf;
diff --git a/test/tint/bug/tint/221.wgsl.expected.wgsl b/test/tint/bug/tint/221.wgsl.expected.wgsl
index a0e5251..ee36aea 100644
--- a/test/tint/bug/tint/221.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/221.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 type Arr = array<u32, 50>;
 
 struct Buf {
-  count : u32;
-  data : Arr;
+  count : u32,
+  data : Arr,
 }
 
 @group(0) @binding(0) var<storage, read_write> b : Buf;
diff --git a/test/tint/bug/tint/294.wgsl b/test/tint/bug/tint/294.wgsl
index beff423..d744467 100644
--- a/test/tint/bug/tint/294.wgsl
+++ b/test/tint/bug/tint/294.wgsl
@@ -1,8 +1,8 @@
 struct Light {
-  position : vec3<f32>;
-  colour : vec3<f32>;
+  position : vec3<f32>,
+  colour : vec3<f32>,
 };
  struct Lights {
-  light : array<Light>;
+  light : array<Light>,
 };
 @group(0) @binding(1) var<storage, read> lights : Lights;
diff --git a/test/tint/bug/tint/294.wgsl.expected.wgsl b/test/tint/bug/tint/294.wgsl.expected.wgsl
index f73ce3c..3384e7b 100644
--- a/test/tint/bug/tint/294.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/294.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
 struct Light {
-  position : vec3<f32>;
-  colour : vec3<f32>;
+  position : vec3<f32>,
+  colour : vec3<f32>,
 }
 
 struct Lights {
-  light : array<Light>;
+  light : array<Light>,
 }
 
 @group(0) @binding(1) var<storage, read> lights : Lights;
diff --git a/test/tint/bug/tint/369.wgsl b/test/tint/bug/tint/369.wgsl
index 00383ab..eec8e27 100644
--- a/test/tint/bug/tint/369.wgsl
+++ b/test/tint/bug/tint/369.wgsl
@@ -1,5 +1,5 @@
  struct S {
-    m : mat2x2<f32>;
+    m : mat2x2<f32>,
 };
 
 @group(0) @binding(0) var<storage> SSBO : S;
diff --git a/test/tint/bug/tint/369.wgsl.expected.wgsl b/test/tint/bug/tint/369.wgsl.expected.wgsl
index b361b1f..44a047a 100644
--- a/test/tint/bug/tint/369.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/369.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 }
 
 @group(0) @binding(0) var<storage> SSBO : S;
diff --git a/test/tint/bug/tint/403.wgsl b/test/tint/bug/tint/403.wgsl
index 82d5e91..1c2a46f 100644
--- a/test/tint/bug/tint/403.wgsl
+++ b/test/tint/bug/tint/403.wgsl
@@ -1,9 +1,9 @@
 
 struct vertexUniformBuffer1 {
-  transform1 : mat2x2<f32>;
+  transform1 : mat2x2<f32>,
 };
 struct vertexUniformBuffer2 {
-  transform2 : mat2x2<f32>;
+  transform2 : mat2x2<f32>,
 };
 
 @group(0) @binding(0) var<uniform> x_20 : vertexUniformBuffer1;
diff --git a/test/tint/bug/tint/403.wgsl.expected.wgsl b/test/tint/bug/tint/403.wgsl.expected.wgsl
index 025e4a5..9ab50ec 100644
--- a/test/tint/bug/tint/403.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/403.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct vertexUniformBuffer1 {
-  transform1 : mat2x2<f32>;
+  transform1 : mat2x2<f32>,
 }
 
 struct vertexUniformBuffer2 {
-  transform2 : mat2x2<f32>;
+  transform2 : mat2x2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_20 : vertexUniformBuffer1;
diff --git a/test/tint/bug/tint/492.wgsl b/test/tint/bug/tint/492.wgsl
index 48ae3df..7f361f4 100644
--- a/test/tint/bug/tint/492.wgsl
+++ b/test/tint/bug/tint/492.wgsl
@@ -1,4 +1,4 @@
- struct S { a : i32; };
+ struct S { a : i32, };
 @group(0) @binding(0) var<storage, read_write> buf : S;
 
 @stage(compute) @workgroup_size(1) fn main() {
diff --git a/test/tint/bug/tint/492.wgsl.expected.wgsl b/test/tint/bug/tint/492.wgsl.expected.wgsl
index 181e7e6..9831e48 100644
--- a/test/tint/bug/tint/492.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/492.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : i32;
+  a : i32,
 }
 
 @group(0) @binding(0) var<storage, read_write> buf : S;
diff --git a/test/tint/bug/tint/534.wgsl b/test/tint/bug/tint/534.wgsl
index 77e9f6b..131116e 100644
--- a/test/tint/bug/tint/534.wgsl
+++ b/test/tint/bug/tint/534.wgsl
@@ -1,11 +1,11 @@
  struct Uniforms {

-    dstTextureFlipY : u32;

-    isFloat16 : u32;

-    isRGB10A2Unorm : u32;

-    channelCount : u32;

+    dstTextureFlipY : u32,

+    isFloat16 : u32,

+    isRGB10A2Unorm : u32,

+    channelCount : u32,

 };

  struct OutputBuf {

-    result : array<u32>;

+    result : array<u32>,

 };

 @group(0) @binding(0) var src : texture_2d<f32>;

 @group(0) @binding(1) var dst : texture_2d<f32>;

diff --git a/test/tint/bug/tint/534.wgsl.expected.wgsl b/test/tint/bug/tint/534.wgsl.expected.wgsl
index 7e86208..fefeba0 100644
--- a/test/tint/bug/tint/534.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/534.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
 struct Uniforms {
-  dstTextureFlipY : u32;
-  isFloat16 : u32;
-  isRGB10A2Unorm : u32;
-  channelCount : u32;
+  dstTextureFlipY : u32,
+  isFloat16 : u32,
+  isRGB10A2Unorm : u32,
+  channelCount : u32,
 }
 
 struct OutputBuf {
-  result : array<u32>;
+  result : array<u32>,
 }
 
 @group(0) @binding(0) var src : texture_2d<f32>;
diff --git a/test/tint/bug/tint/744.wgsl b/test/tint/bug/tint/744.wgsl
index 31daa13..4391fd8 100644
--- a/test/tint/bug/tint/744.wgsl
+++ b/test/tint/bug/tint/744.wgsl
@@ -1,10 +1,10 @@
  struct Uniforms {
-    aShape : vec2<u32>;
-    bShape : vec2<u32>;
-    outShape : vec2<u32>;
+    aShape : vec2<u32>,
+    bShape : vec2<u32>,
+    outShape : vec2<u32>,
 };
  struct Matrix {
-    numbers: array<u32>;
+    numbers: array<u32>,
 };
 
 @group(0) @binding(0) var<storage, read> firstMatrix : Matrix;
diff --git a/test/tint/bug/tint/744.wgsl.expected.wgsl b/test/tint/bug/tint/744.wgsl.expected.wgsl
index e670d80..9ac2447 100644
--- a/test/tint/bug/tint/744.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/744.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
 struct Uniforms {
-  aShape : vec2<u32>;
-  bShape : vec2<u32>;
-  outShape : vec2<u32>;
+  aShape : vec2<u32>,
+  bShape : vec2<u32>,
+  outShape : vec2<u32>,
 }
 
 struct Matrix {
-  numbers : array<u32>;
+  numbers : array<u32>,
 }
 
 @group(0) @binding(0) var<storage, read> firstMatrix : Matrix;
diff --git a/test/tint/bug/tint/749.spvasm.expected.wgsl b/test/tint/bug/tint/749.spvasm.expected.wgsl
index 47d1cb8..1832e71 100644
--- a/test/tint/bug/tint/749.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/749.spvasm.expected.wgsl
@@ -1,9 +1,9 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -1470,7 +1470,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/bug/tint/757.wgsl b/test/tint/bug/tint/757.wgsl
index 24b0418..437f7b4 100644
--- a/test/tint/bug/tint/757.wgsl
+++ b/test/tint/bug/tint/757.wgsl
@@ -1,13 +1,13 @@
 
  struct Constants {
-  level : i32;
+  level : i32,
 };
 
 @group(0) @binding(0) var<uniform> constants : Constants;
 @group(0) @binding(1) var myTexture : texture_2d_array<f32>;
 
  struct Result {
-  values : array<f32>;
+  values : array<f32>,
 };
 @group(0) @binding(3) var<storage, read_write> result : Result;
 
diff --git a/test/tint/bug/tint/757.wgsl.expected.wgsl b/test/tint/bug/tint/757.wgsl.expected.wgsl
index 6beca1d..15f4e3f 100644
--- a/test/tint/bug/tint/757.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/757.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct Constants {
-  level : i32;
+  level : i32,
 }
 
 @group(0) @binding(0) var<uniform> constants : Constants;
@@ -7,7 +7,7 @@
 @group(0) @binding(1) var myTexture : texture_2d_array<f32>;
 
 struct Result {
-  values : array<f32>;
+  values : array<f32>,
 }
 
 @group(0) @binding(3) var<storage, read_write> result : Result;
diff --git a/test/tint/bug/tint/804.spv.expected.glsl b/test/tint/bug/tint/804.spv.expected.glsl
index a1eef08..1267d89 100644
--- a/test/tint/bug/tint/804.spv.expected.glsl
+++ b/test/tint/bug/tint/804.spv.expected.glsl
@@ -2,12 +2,12 @@
 
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct S {
-  field0 : u32;
-  field1 : u32;
+  field0 : u32,
+  field1 : u32,
 }
 
 @group(0) @binding(0) var<uniform> x_75 : buf0;
diff --git a/test/tint/bug/tint/804.spv.expected.hlsl b/test/tint/bug/tint/804.spv.expected.hlsl
index 85b35ec..146a132 100644
--- a/test/tint/bug/tint/804.spv.expected.hlsl
+++ b/test/tint/bug/tint/804.spv.expected.hlsl
@@ -2,12 +2,12 @@
 
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 };
 
 struct S {
-  field0 : u32;
-  field1 : u32;
+  field0 : u32,
+  field1 : u32,
 };
 
 @group(0) @binding(0) var<uniform> x_75 : buf0;
diff --git a/test/tint/bug/tint/807.spv.expected.glsl b/test/tint/bug/tint/807.spv.expected.glsl
index 5036690..bae8fb2 100644
--- a/test/tint/bug/tint/807.spv.expected.glsl
+++ b/test/tint/bug/tint/807.spv.expected.glsl
@@ -2,7 +2,7 @@
 
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 error: undef pointer is not valid: %845 = OpUndef %434
diff --git a/test/tint/bug/tint/807.spv.expected.hlsl b/test/tint/bug/tint/807.spv.expected.hlsl
index 785418e..d681370 100644
--- a/test/tint/bug/tint/807.spv.expected.hlsl
+++ b/test/tint/bug/tint/807.spv.expected.hlsl
@@ -2,7 +2,7 @@
 
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 };
 
 error: undef pointer is not valid: %845 = OpUndef %434
diff --git a/test/tint/bug/tint/824.wgsl b/test/tint/bug/tint/824.wgsl
index 68a7b66..7319fc0 100644
--- a/test/tint/bug/tint/824.wgsl
+++ b/test/tint/bug/tint/824.wgsl
@@ -1,6 +1,6 @@
 struct Output {
-    @builtin(position) Position : vec4<f32>;
-    @location(0) color : vec4<f32>;
+    @builtin(position) Position : vec4<f32>,
+    @location(0) color : vec4<f32>,
 };
 @stage(vertex) fn main(
     @builtin(vertex_index) VertexIndex : u32,
diff --git a/test/tint/bug/tint/824.wgsl.expected.wgsl b/test/tint/bug/tint/824.wgsl.expected.wgsl
index cb77758..7518b89 100644
--- a/test/tint/bug/tint/824.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/824.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 struct Output {
   @builtin(position)
-  Position : vec4<f32>;
+  Position : vec4<f32>,
   @location(0)
-  color : vec4<f32>;
+  color : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/bug/tint/827.wgsl b/test/tint/bug/tint/827.wgsl
index 8a1bbe8..d1dbc00 100644
--- a/test/tint/bug/tint/827.wgsl
+++ b/test/tint/bug/tint/827.wgsl
@@ -1,5 +1,5 @@
  struct Result {
-    values : array<f32>;
+    values : array<f32>,
 };
 
 let width : u32 = 128u;
diff --git a/test/tint/bug/tint/827.wgsl.expected.wgsl b/test/tint/bug/tint/827.wgsl.expected.wgsl
index 2f7d250..57561ca 100644
--- a/test/tint/bug/tint/827.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/827.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct Result {
-  values : array<f32>;
+  values : array<f32>,
 }
 
 let width : u32 = 128u;
diff --git a/test/tint/bug/tint/870.spvasm.expected.wgsl b/test/tint/bug/tint/870.spvasm.expected.wgsl
index a04e265..f32dd4d 100644
--- a/test/tint/bug/tint/870.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/870.spvasm.expected.wgsl
@@ -1,14 +1,14 @@
 type Arr = array<i32, 6u>;
 
 struct sspp962805860buildInformationS {
-  footprint : vec4<f32>;
-  offset : vec4<f32>;
-  essence : i32;
-  orientation : Arr;
+  footprint : vec4<f32>,
+  offset : vec4<f32>,
+  essence : i32,
+  orientation : Arr,
 }
 
 struct x_B4_BuildInformation {
-  passthru : sspp962805860buildInformationS;
+  passthru : sspp962805860buildInformationS,
 }
 
 @group(0) @binding(2) var<storage, read> sspp962805860buildInformation : x_B4_BuildInformation;
diff --git a/test/tint/bug/tint/913.wgsl b/test/tint/bug/tint/913.wgsl
index 8a49ced..5d1ad7a 100644
--- a/test/tint/bug/tint/913.wgsl
+++ b/test/tint/bug/tint/913.wgsl
@@ -1,12 +1,12 @@
  struct Uniforms {
-    dstTextureFlipY : u32;
-    channelCount    : u32;
-    srcCopyOrigin   : vec2<u32>;
-    dstCopyOrigin   : vec2<u32>;
-    copySize        : vec2<u32>;
+    dstTextureFlipY : u32,
+    channelCount    : u32,
+    srcCopyOrigin   : vec2<u32>,
+    dstCopyOrigin   : vec2<u32>,
+    copySize        : vec2<u32>,
 };
  struct OutputBuf {
-    result : array<u32>;
+    result : array<u32>,
 };
 @group(0) @binding(0) var src : texture_2d<f32>;
 @group(0) @binding(1) var dst : texture_2d<f32>;
diff --git a/test/tint/bug/tint/913.wgsl.expected.wgsl b/test/tint/bug/tint/913.wgsl.expected.wgsl
index 9c30250..2e471da 100644
--- a/test/tint/bug/tint/913.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/913.wgsl.expected.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {
-  dstTextureFlipY : u32;
-  channelCount : u32;
-  srcCopyOrigin : vec2<u32>;
-  dstCopyOrigin : vec2<u32>;
-  copySize : vec2<u32>;
+  dstTextureFlipY : u32,
+  channelCount : u32,
+  srcCopyOrigin : vec2<u32>,
+  dstCopyOrigin : vec2<u32>,
+  copySize : vec2<u32>,
 }
 
 struct OutputBuf {
-  result : array<u32>;
+  result : array<u32>,
 }
 
 @group(0) @binding(0) var src : texture_2d<f32>;
diff --git a/test/tint/bug/tint/914.wgsl b/test/tint/bug/tint/914.wgsl
index 655c3ab..5ee9ad2 100644
--- a/test/tint/bug/tint/914.wgsl
+++ b/test/tint/bug/tint/914.wgsl
@@ -1,10 +1,10 @@
  struct Uniforms {
-    dimAOuter : u32;
-    dimInner : u32;
-    dimBOuter : u32;
+    dimAOuter : u32,
+    dimInner : u32,
+    dimBOuter : u32,
 };
  struct Matrix {
-    numbers: array<f32>;
+    numbers: array<f32>,
 };
 
 @group(0) @binding(0) var<storage, read> firstMatrix : Matrix;
diff --git a/test/tint/bug/tint/914.wgsl.expected.wgsl b/test/tint/bug/tint/914.wgsl.expected.wgsl
index 7d88d77..9c5ad0c 100644
--- a/test/tint/bug/tint/914.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/914.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
 struct Uniforms {
-  dimAOuter : u32;
-  dimInner : u32;
-  dimBOuter : u32;
+  dimAOuter : u32,
+  dimInner : u32,
+  dimBOuter : u32,
 }
 
 struct Matrix {
-  numbers : array<f32>;
+  numbers : array<f32>,
 }
 
 @group(0) @binding(0) var<storage, read> firstMatrix : Matrix;
diff --git a/test/tint/bug/tint/922.wgsl b/test/tint/bug/tint/922.wgsl
index 1ef80df..0e7a0cb 100644
--- a/test/tint/bug/tint/922.wgsl
+++ b/test/tint/bug/tint/922.wgsl
@@ -1,38 +1,38 @@
 struct Mat4x4_ {
-    mx: vec4<f32>;
-    my: vec4<f32>;
-    mz: vec4<f32>;
-    mw: vec4<f32>;
+    mx: vec4<f32>,
+    my: vec4<f32>,
+    mz: vec4<f32>,
+    mw: vec4<f32>,
 };
 
 struct Mat4x3_ {
-    mx: vec4<f32>;
-    my: vec4<f32>;
-    mz: vec4<f32>;
+    mx: vec4<f32>,
+    my: vec4<f32>,
+    mz: vec4<f32>,
 };
 
 struct Mat4x2_ {
-    mx: vec4<f32>;
-    my: vec4<f32>;
+    mx: vec4<f32>,
+    my: vec4<f32>,
 };
 
 struct ub_SceneParams {
-    u_Projection: Mat4x4_;
+    u_Projection: Mat4x4_,
 };
 
 struct ub_MaterialParams {
-    u_TexMtx: array<Mat4x2_,1>;
-    u_Misc0_: vec4<f32>;
+    u_TexMtx: array<Mat4x2_,1>,
+    u_Misc0_: vec4<f32>,
 };
 
 struct ub_PacketParams {
-    u_PosMtx: array<Mat4x3_,32>;
+    u_PosMtx: array<Mat4x3_,32>,
 };
 
 struct VertexOutput {
-    @location(0) v_Color: vec4<f32>;
-    @location(1) v_TexCoord: vec2<f32>;
-    @builtin(position) member: vec4<f32>;
+    @location(0) v_Color: vec4<f32>,
+    @location(1) v_TexCoord: vec2<f32>,
+    @builtin(position) member: vec4<f32>,
 };
 
 @group(0) @binding(0)
diff --git a/test/tint/bug/tint/922.wgsl.expected.wgsl b/test/tint/bug/tint/922.wgsl.expected.wgsl
index 8151b6e..00055b1 100644
--- a/test/tint/bug/tint/922.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/922.wgsl.expected.wgsl
@@ -1,41 +1,41 @@
 struct Mat4x4_ {
-  mx : vec4<f32>;
-  my : vec4<f32>;
-  mz : vec4<f32>;
-  mw : vec4<f32>;
+  mx : vec4<f32>,
+  my : vec4<f32>,
+  mz : vec4<f32>,
+  mw : vec4<f32>,
 }
 
 struct Mat4x3_ {
-  mx : vec4<f32>;
-  my : vec4<f32>;
-  mz : vec4<f32>;
+  mx : vec4<f32>,
+  my : vec4<f32>,
+  mz : vec4<f32>,
 }
 
 struct Mat4x2_ {
-  mx : vec4<f32>;
-  my : vec4<f32>;
+  mx : vec4<f32>,
+  my : vec4<f32>,
 }
 
 struct ub_SceneParams {
-  u_Projection : Mat4x4_;
+  u_Projection : Mat4x4_,
 }
 
 struct ub_MaterialParams {
-  u_TexMtx : array<Mat4x2_, 1>;
-  u_Misc0_ : vec4<f32>;
+  u_TexMtx : array<Mat4x2_, 1>,
+  u_Misc0_ : vec4<f32>,
 }
 
 struct ub_PacketParams {
-  u_PosMtx : array<Mat4x3_, 32>;
+  u_PosMtx : array<Mat4x3_, 32>,
 }
 
 struct VertexOutput {
   @location(0)
-  v_Color : vec4<f32>;
+  v_Color : vec4<f32>,
   @location(1)
-  v_TexCoord : vec2<f32>;
+  v_TexCoord : vec2<f32>,
   @builtin(position)
-  member : vec4<f32>;
+  member : vec4<f32>,
 }
 
 @group(0) @binding(0) var<uniform> global : ub_SceneParams;
diff --git a/test/tint/bug/tint/926.wgsl b/test/tint/bug/tint/926.wgsl
index 652d196..ba04a7b 100644
--- a/test/tint/bug/tint/926.wgsl
+++ b/test/tint/bug/tint/926.wgsl
@@ -1,5 +1,5 @@
  struct DrawIndirectArgs {
-  vertexCount : atomic<u32>;
+  vertexCount : atomic<u32>,
 };
 @group(0) @binding(5) var<storage, read_write> drawOut : DrawIndirectArgs;
 
diff --git a/test/tint/bug/tint/926.wgsl.expected.wgsl b/test/tint/bug/tint/926.wgsl.expected.wgsl
index 6af7afb..847850d 100644
--- a/test/tint/bug/tint/926.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/926.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct DrawIndirectArgs {
-  vertexCount : atomic<u32>;
+  vertexCount : atomic<u32>,
 }
 
 @group(0) @binding(5) var<storage, read_write> drawOut : DrawIndirectArgs;
diff --git a/test/tint/bug/tint/942.wgsl b/test/tint/bug/tint/942.wgsl
index 273dc53..722dc75 100644
--- a/test/tint/bug/tint/942.wgsl
+++ b/test/tint/bug/tint/942.wgsl
@@ -1,6 +1,6 @@
  struct Params {
-  filterDim : u32;
-  blockDim : u32;
+  filterDim : u32,
+  blockDim : u32,
 };
 
 @group(0) @binding(0) var samp : sampler;
@@ -9,7 +9,7 @@
 @group(1) @binding(2) var outputTex : texture_storage_2d<rgba8unorm, write>;
 
  struct Flip {
-  value : u32;
+  value : u32,
 };
 @group(1) @binding(3) var<uniform> flip : Flip;
 
diff --git a/test/tint/bug/tint/942.wgsl.expected.wgsl b/test/tint/bug/tint/942.wgsl.expected.wgsl
index 5fb7d1b..99b1bd4 100644
--- a/test/tint/bug/tint/942.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/942.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Params {
-  filterDim : u32;
-  blockDim : u32;
+  filterDim : u32,
+  blockDim : u32,
 }
 
 @group(0) @binding(0) var samp : sampler;
@@ -12,7 +12,7 @@
 @group(1) @binding(2) var outputTex : texture_storage_2d<rgba8unorm, write>;
 
 struct Flip {
-  value : u32;
+  value : u32,
 }
 
 @group(1) @binding(3) var<uniform> flip : Flip;
diff --git a/test/tint/bug/tint/943.spvasm.expected.wgsl b/test/tint/bug/tint/943.spvasm.expected.wgsl
index e587782..0cf809c 100644
--- a/test/tint/bug/tint/943.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/943.spvasm.expected.wgsl
@@ -1,17 +1,17 @@
 struct Uniforms {
-  NAN : f32;
+  NAN : f32,
   @size(12)
-  padding : u32;
-  aShape : vec3<i32>;
+  padding : u32,
+  aShape : vec3<i32>,
   @size(4)
-  padding_1 : u32;
-  bShape : vec3<i32>;
+  padding_1 : u32,
+  bShape : vec3<i32>,
   @size(4)
-  padding_2 : u32;
-  outShape : vec3<i32>;
+  padding_2 : u32,
+  outShape : vec3<i32>,
   @size(4)
-  padding_3 : u32;
-  outShapeStrides : vec2<i32>;
+  padding_3 : u32,
+  outShapeStrides : vec2<i32>,
 }
 
 type RTArr = array<f32>;
@@ -19,17 +19,17 @@
 type RTArr_1 = array<f32>;
 
 struct ssbOut {
-  result : RTArr_1;
+  result : RTArr_1,
 }
 
 type RTArr_2 = array<f32>;
 
 struct ssbA {
-  A : RTArr_1;
+  A : RTArr_1,
 }
 
 struct ssbB {
-  B : RTArr_1;
+  B : RTArr_1,
 }
 
 var<private> dimAOuter_1 : i32;
diff --git a/test/tint/bug/tint/948.wgsl b/test/tint/bug/tint/948.wgsl
index e07fab9..4cc4329 100644
--- a/test/tint/bug/tint/948.wgsl
+++ b/test/tint/bug/tint/948.wgsl
@@ -1,14 +1,14 @@
 struct LeftOver {
-  time : f32;
+  time : f32,
   @size(12)
-  padding : u32;
-  worldViewProjection : mat4x4<f32>;
-  outputSize : vec2<f32>;
-  stageSize : vec2<f32>;
-  spriteMapSize : vec2<f32>;
-  stageScale : f32;
-  spriteCount : f32;
-  colorMul : vec3<f32>;
+  padding : u32,
+  worldViewProjection : mat4x4<f32>,
+  outputSize : vec2<f32>,
+  stageSize : vec2<f32>,
+  spriteMapSize : vec2<f32>,
+  stageScale : f32,
+  spriteCount : f32,
+  colorMul : vec3<f32>,
 };
 
 @group(2) @binding(9) var<uniform> x_20 : LeftOver;
@@ -212,7 +212,7 @@
 
 struct main_out {
   @location(0)
-  glFragColor_1 : vec4<f32>;
+  glFragColor_1 : vec4<f32>,
 };
 
 @stage(fragment)
diff --git a/test/tint/bug/tint/948.wgsl.expected.wgsl b/test/tint/bug/tint/948.wgsl.expected.wgsl
index 8a4fc7e..3c11fec 100644
--- a/test/tint/bug/tint/948.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/948.wgsl.expected.wgsl
@@ -1,14 +1,14 @@
 struct LeftOver {
-  time : f32;
+  time : f32,
   @size(12)
-  padding : u32;
-  worldViewProjection : mat4x4<f32>;
-  outputSize : vec2<f32>;
-  stageSize : vec2<f32>;
-  spriteMapSize : vec2<f32>;
-  stageScale : f32;
-  spriteCount : f32;
-  colorMul : vec3<f32>;
+  padding : u32,
+  worldViewProjection : mat4x4<f32>,
+  outputSize : vec2<f32>,
+  stageSize : vec2<f32>,
+  spriteMapSize : vec2<f32>,
+  stageScale : f32,
+  spriteCount : f32,
+  colorMul : vec3<f32>,
 }
 
 @group(2) @binding(9) var<uniform> x_20 : LeftOver;
@@ -212,7 +212,7 @@
 
 struct main_out {
   @location(0)
-  glFragColor_1 : vec4<f32>;
+  glFragColor_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/bug/tint/949.wgsl b/test/tint/bug/tint/949.wgsl
index 86ca7fc..3b302a6 100644
--- a/test/tint/bug/tint/949.wgsl
+++ b/test/tint/bug/tint/949.wgsl
@@ -1,32 +1,32 @@
 // Dumped generated WGSL
 struct lightingInfo {
-  diffuse : vec3<f32>;
-  specular : vec3<f32>;
+  diffuse : vec3<f32>,
+  specular : vec3<f32>,
 };
 
 struct LeftOver {
-  u_World : mat4x4<f32>;
-  u_ViewProjection : mat4x4<f32>;
-  u_bumpStrength : f32;
+  u_World : mat4x4<f32>,
+  u_ViewProjection : mat4x4<f32>,
+  u_bumpStrength : f32,
   @size(12)
-  padding : u32;
-  u_cameraPosition : vec3<f32>;
-  u_parallaxScale : f32;
-  textureInfoName : f32;
+  padding : u32,
+  u_cameraPosition : vec3<f32>,
+  u_parallaxScale : f32,
+  textureInfoName : f32,
   @size(4)
-  padding_1 : u32;
-  tangentSpaceParameter0 : vec2<f32>;
+  padding_1 : u32,
+  tangentSpaceParameter0 : vec2<f32>,
 };
 
 struct Light0 {
-  vLightData : vec4<f32>;
-  vLightDiffuse : vec4<f32>;
-  vLightSpecular : vec4<f32>;
-  vLightGround : vec3<f32>;
+  vLightData : vec4<f32>,
+  vLightDiffuse : vec4<f32>,
+  vLightSpecular : vec4<f32>,
+  vLightGround : vec3<f32>,
   @size(4)
-  padding_2 : u32;
-  shadowsInfo : vec4<f32>;
-  depthValues : vec2<f32>;
+  padding_2 : u32,
+  shadowsInfo : vec4<f32>,
+  depthValues : vec2<f32>,
 };
 
 var<private> u_Float : f32;
@@ -438,7 +438,7 @@
 
 struct main_out {
   @location(0)
-  glFragColor_1 : vec4<f32>;
+  glFragColor_1 : vec4<f32>,
 };
 
 @stage(fragment)
diff --git a/test/tint/bug/tint/949.wgsl.expected.wgsl b/test/tint/bug/tint/949.wgsl.expected.wgsl
index e374119..c16bf96 100644
--- a/test/tint/bug/tint/949.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/949.wgsl.expected.wgsl
@@ -1,31 +1,31 @@
 struct lightingInfo {
-  diffuse : vec3<f32>;
-  specular : vec3<f32>;
+  diffuse : vec3<f32>,
+  specular : vec3<f32>,
 }
 
 struct LeftOver {
-  u_World : mat4x4<f32>;
-  u_ViewProjection : mat4x4<f32>;
-  u_bumpStrength : f32;
+  u_World : mat4x4<f32>,
+  u_ViewProjection : mat4x4<f32>,
+  u_bumpStrength : f32,
   @size(12)
-  padding : u32;
-  u_cameraPosition : vec3<f32>;
-  u_parallaxScale : f32;
-  textureInfoName : f32;
+  padding : u32,
+  u_cameraPosition : vec3<f32>,
+  u_parallaxScale : f32,
+  textureInfoName : f32,
   @size(4)
-  padding_1 : u32;
-  tangentSpaceParameter0 : vec2<f32>;
+  padding_1 : u32,
+  tangentSpaceParameter0 : vec2<f32>,
 }
 
 struct Light0 {
-  vLightData : vec4<f32>;
-  vLightDiffuse : vec4<f32>;
-  vLightSpecular : vec4<f32>;
-  vLightGround : vec3<f32>;
+  vLightData : vec4<f32>,
+  vLightDiffuse : vec4<f32>,
+  vLightSpecular : vec4<f32>,
+  vLightGround : vec3<f32>,
   @size(4)
-  padding_2 : u32;
-  shadowsInfo : vec4<f32>;
-  depthValues : vec2<f32>;
+  padding_2 : u32,
+  shadowsInfo : vec4<f32>,
+  depthValues : vec2<f32>,
 }
 
 var<private> u_Float : f32;
@@ -437,7 +437,7 @@
 
 struct main_out {
   @location(0)
-  glFragColor_1 : vec4<f32>;
+  glFragColor_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/bug/tint/951.spvasm.expected.wgsl b/test/tint/bug/tint/951.spvasm.expected.wgsl
index 865bac8..bb5b65b 100644
--- a/test/tint/bug/tint/951.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/951.spvasm.expected.wgsl
@@ -3,19 +3,19 @@
 type RTArr_1 = array<f32>;
 
 struct ssbOut {
-  result : RTArr_1;
+  result : RTArr_1,
 }
 
 struct ssbA {
-  A : RTArr_1;
+  A : RTArr_1,
 }
 
 struct Uniforms {
-  NAN : f32;
-  aShape : i32;
-  outShape : i32;
-  outShapeStrides : i32;
-  size : i32;
+  NAN : f32,
+  aShape : i32,
+  outShape : i32,
+  outShapeStrides : i32,
+  size : i32,
 }
 
 @group(0) @binding(0) var<storage, read_write> x_16 : ssbOut;
diff --git a/test/tint/bug/tint/959.wgsl b/test/tint/bug/tint/959.wgsl
index 244775a..e472591 100644
--- a/test/tint/bug/tint/959.wgsl
+++ b/test/tint/bug/tint/959.wgsl
@@ -4,7 +4,7 @@
 // densely packed starting at 0.
 
 struct S {
-  a : f32;
+  a : f32,
 };
 
 @group(0)  @binding(0) var<storage> b0  : S;
diff --git a/test/tint/bug/tint/959.wgsl.expected.wgsl b/test/tint/bug/tint/959.wgsl.expected.wgsl
index 7ccfbb9..face4f9 100644
--- a/test/tint/bug/tint/959.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/959.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 }
 
 @group(0) @binding(0) var<storage> b0 : S;
diff --git a/test/tint/bug/tint/977.spvasm.expected.wgsl b/test/tint/bug/tint/977.spvasm.expected.wgsl
index ac33a71..1cbf103 100644
--- a/test/tint/bug/tint/977.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/977.spvasm.expected.wgsl
@@ -3,23 +3,23 @@
 type RTArr_1 = array<f32>;
 
 struct ResultMatrix {
-  numbers : RTArr_1;
+  numbers : RTArr_1,
 }
 
 type RTArr_2 = array<f32>;
 
 struct FirstMatrix {
-  numbers : RTArr_1;
+  numbers : RTArr_1,
 }
 
 struct SecondMatrix {
-  numbers : RTArr_1;
+  numbers : RTArr_1,
 }
 
 struct Uniforms {
-  NAN : f32;
-  sizeA : i32;
-  sizeB : i32;
+  NAN : f32,
+  sizeA : i32,
+  sizeB : i32,
 }
 
 var<private> gl_GlobalInvocationID : vec3<u32>;
diff --git a/test/tint/bug/tint/978.wgsl b/test/tint/bug/tint/978.wgsl
index c4b25a1..3a0635f 100644
--- a/test/tint/bug/tint/978.wgsl
+++ b/test/tint/bug/tint/978.wgsl
@@ -1,12 +1,12 @@
 
 struct FragmentInput
 {
-	@location(2) vUv : vec2<f32>;
+	@location(2) vUv : vec2<f32>
 };
 
 struct FragmentOutput
 {
-	@location(0) color : vec4<f32>;
+	@location(0) color : vec4<f32>
 };
 
 @binding(5) @group(1) var depthMap : texture_depth_2d;
diff --git a/test/tint/bug/tint/978.wgsl.expected.wgsl b/test/tint/bug/tint/978.wgsl.expected.wgsl
index 8588fe7..8327a57 100644
--- a/test/tint/bug/tint/978.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/978.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
 struct FragmentInput {
   @location(2)
-  vUv : vec2<f32>;
+  vUv : vec2<f32>,
 }
 
 struct FragmentOutput {
   @location(0)
-  color : vec4<f32>;
+  color : vec4<f32>,
 }
 
 @binding(5) @group(1) var depthMap : texture_depth_2d;
diff --git a/test/tint/bug/tint/980.wgsl b/test/tint/bug/tint/980.wgsl
index 3f399b0..3188a80 100644
--- a/test/tint/bug/tint/980.wgsl
+++ b/test/tint/bug/tint/980.wgsl
@@ -5,7 +5,7 @@
   return normalize(normal);
 }
 
- struct S { v : vec3<f32>; i : u32; };
+ struct S { v : vec3<f32>, i : u32, };
 @binding(0) @group(0) var<storage, read_write> io : S;
 @stage(compute) @workgroup_size(1)
 fn main(@builtin(local_invocation_index) idx : u32) {
diff --git a/test/tint/bug/tint/980.wgsl.expected.wgsl b/test/tint/bug/tint/980.wgsl.expected.wgsl
index ef89fd0..076e450 100644
--- a/test/tint/bug/tint/980.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/980.wgsl.expected.wgsl
@@ -5,8 +5,8 @@
 }
 
 struct S {
-  v : vec3<f32>;
-  i : u32;
+  v : vec3<f32>,
+  i : u32,
 }
 
 @binding(0) @group(0) var<storage, read_write> io : S;
diff --git a/test/tint/bug/tint/993.wgsl b/test/tint/bug/tint/993.wgsl
index b5ebe30..35f4599 100644
--- a/test/tint/bug/tint/993.wgsl
+++ b/test/tint/bug/tint/993.wgsl
@@ -1,16 +1,16 @@
 
  struct Constants {
-  zero: u32;
+  zero: u32,
 };
 @group(1) @binding(0) var<uniform> constants: Constants;
 
  struct Result {
-  value: u32;
+  value: u32,
 };
 @group(1) @binding(1) var<storage, write> result: Result;
 
  struct TestData {
-  data: array<atomic<i32>,3>;
+  data: array<atomic<i32>,3>,
 };
 @group(0) @binding(0) var<storage, read_write> s: TestData;
 
diff --git a/test/tint/bug/tint/993.wgsl.expected.wgsl b/test/tint/bug/tint/993.wgsl.expected.wgsl
index 5d0863d..32aefc6 100644
--- a/test/tint/bug/tint/993.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/993.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct Constants {
-  zero : u32;
+  zero : u32,
 }
 
 @group(1) @binding(0) var<uniform> constants : Constants;
 
 struct Result {
-  value : u32;
+  value : u32,
 }
 
 @group(1) @binding(1) var<storage, write> result : Result;
 
 struct TestData {
-  data : array<atomic<i32>, 3>;
+  data : array<atomic<i32>, 3>,
 }
 
 @group(0) @binding(0) var<storage, read_write> s : TestData;
diff --git a/test/tint/bug/tint/998.wgsl b/test/tint/bug/tint/998.wgsl
index 3186b30..cb85dde 100644
--- a/test/tint/bug/tint/998.wgsl
+++ b/test/tint/bug/tint/998.wgsl
@@ -1,15 +1,15 @@
  struct Constants {
-  zero: u32;
+  zero: u32,
 };
 @group(1) @binding(0) var<uniform> constants: Constants;
 
  struct Result {
-  value: u32;
+  value: u32,
 };
 @group(1) @binding(1) var<storage, write> result: Result;
 
 struct S {
-  data: array<u32, 3>;
+  data: array<u32, 3>,
 };
 var<private> s: S;
 
diff --git a/test/tint/bug/tint/998.wgsl.expected.wgsl b/test/tint/bug/tint/998.wgsl.expected.wgsl
index 35ed13f..1068851 100644
--- a/test/tint/bug/tint/998.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/998.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct Constants {
-  zero : u32;
+  zero : u32,
 }
 
 @group(1) @binding(0) var<uniform> constants : Constants;
 
 struct Result {
-  value : u32;
+  value : u32,
 }
 
 @group(1) @binding(1) var<storage, write> result : Result;
 
 struct S {
-  data : array<u32, 3>;
+  data : array<u32, 3>,
 }
 
 var<private> s : S;
diff --git a/test/tint/builtins/arrayLength/complex_via_let.wgsl b/test/tint/builtins/arrayLength/complex_via_let.wgsl
index 76dd5a2..29c07c9 100644
--- a/test/tint/builtins/arrayLength/complex_via_let.wgsl
+++ b/test/tint/builtins/arrayLength/complex_via_let.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    a : array<i32>;
+    a : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.wgsl
index 3701b01..a35b6e4 100644
--- a/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : array<i32>;
+  a : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/arrayLength/deprecated.wgsl b/test/tint/builtins/arrayLength/deprecated.wgsl
index ce9d77c..0af15ea 100644
--- a/test/tint/builtins/arrayLength/deprecated.wgsl
+++ b/test/tint/builtins/arrayLength/deprecated.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    a : array<i32>;
+    a : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/arrayLength/deprecated.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.wgsl
index 2cc825e..7d96296 100644
--- a/test/tint/builtins/arrayLength/deprecated.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : array<i32>;
+  a : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/arrayLength/simple.wgsl b/test/tint/builtins/arrayLength/simple.wgsl
index 95037fe..74ff5cc 100644
--- a/test/tint/builtins/arrayLength/simple.wgsl
+++ b/test/tint/builtins/arrayLength/simple.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    a : array<i32>;
+    a : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/arrayLength/simple.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/simple.wgsl.expected.wgsl
index f9fdd91..f1db44b 100644
--- a/test/tint/builtins/arrayLength/simple.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/simple.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : array<i32>;
+  a : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/arrayLength/via_let.wgsl b/test/tint/builtins/arrayLength/via_let.wgsl
index 53e45ba..e3dff0b 100644
--- a/test/tint/builtins/arrayLength/via_let.wgsl
+++ b/test/tint/builtins/arrayLength/via_let.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    a : array<i32>;
+    a : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/arrayLength/via_let.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/via_let.wgsl.expected.wgsl
index 25ab694..7a7ffbd 100644
--- a/test/tint/builtins/arrayLength/via_let.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/via_let.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : array<i32>;
+  a : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/arrayLength/via_let_complex.wgsl b/test/tint/builtins/arrayLength/via_let_complex.wgsl
index bd99c11..a30a39d 100644
--- a/test/tint/builtins/arrayLength/via_let_complex.wgsl
+++ b/test/tint/builtins/arrayLength/via_let_complex.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    a : array<i32>;
+    a : array<i32>,
 };
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.wgsl
index 30f059a..2db8863 100644
--- a/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : array<i32>;
+  a : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read> G : S;
diff --git a/test/tint/builtins/gen/arrayLength/1588cd.wgsl b/test/tint/builtins/gen/arrayLength/1588cd.wgsl
index 80a190d..6f49b0f 100644
--- a/test/tint/builtins/gen/arrayLength/1588cd.wgsl
+++ b/test/tint/builtins/gen/arrayLength/1588cd.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RO {
-  arg_0: array<i32>;
+  arg_0: array<i32>,
 };
 @group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 
diff --git a/test/tint/builtins/gen/arrayLength/1588cd.wgsl.expected.wgsl b/test/tint/builtins/gen/arrayLength/1588cd.wgsl.expected.wgsl
index bbf5a36..2a2648d 100644
--- a/test/tint/builtins/gen/arrayLength/1588cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/arrayLength/1588cd.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RO {
-  arg_0 : array<i32>;
+  arg_0 : array<i32>,
 }
 
 @group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
diff --git a/test/tint/builtins/gen/arrayLength/61b1c7.wgsl b/test/tint/builtins/gen/arrayLength/61b1c7.wgsl
index cae364a..dafd6e1 100644
--- a/test/tint/builtins/gen/arrayLength/61b1c7.wgsl
+++ b/test/tint/builtins/gen/arrayLength/61b1c7.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: array<i32>;
+  arg_0: array<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/arrayLength/61b1c7.wgsl.expected.wgsl b/test/tint/builtins/gen/arrayLength/61b1c7.wgsl.expected.wgsl
index fdd6856..73dbbb7 100644
--- a/test/tint/builtins/gen/arrayLength/61b1c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/arrayLength/61b1c7.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : array<i32>;
+  arg_0 : array<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/arrayLength/a0f5ca.wgsl b/test/tint/builtins/gen/arrayLength/a0f5ca.wgsl
index c7ab943..0d0b18e 100644
--- a/test/tint/builtins/gen/arrayLength/a0f5ca.wgsl
+++ b/test/tint/builtins/gen/arrayLength/a0f5ca.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RO {
-  arg_0: array<f32>;
+  arg_0: array<f32>,
 };
 @group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 
diff --git a/test/tint/builtins/gen/arrayLength/a0f5ca.wgsl.expected.wgsl b/test/tint/builtins/gen/arrayLength/a0f5ca.wgsl.expected.wgsl
index d26abde..a1eb324 100644
--- a/test/tint/builtins/gen/arrayLength/a0f5ca.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/arrayLength/a0f5ca.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RO {
-  arg_0 : array<f32>;
+  arg_0 : array<f32>,
 }
 
 @group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
diff --git a/test/tint/builtins/gen/arrayLength/cdd123.wgsl b/test/tint/builtins/gen/arrayLength/cdd123.wgsl
index 3b325ff..c560fd9 100644
--- a/test/tint/builtins/gen/arrayLength/cdd123.wgsl
+++ b/test/tint/builtins/gen/arrayLength/cdd123.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: array<f32>;
+  arg_0: array<f32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/arrayLength/cdd123.wgsl.expected.wgsl b/test/tint/builtins/gen/arrayLength/cdd123.wgsl.expected.wgsl
index 382f356..1f2d17c 100644
--- a/test/tint/builtins/gen/arrayLength/cdd123.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/arrayLength/cdd123.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : array<f32>;
+  arg_0 : array<f32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/arrayLength/cfca0a.wgsl b/test/tint/builtins/gen/arrayLength/cfca0a.wgsl
index f797c03..5a488c5 100644
--- a/test/tint/builtins/gen/arrayLength/cfca0a.wgsl
+++ b/test/tint/builtins/gen/arrayLength/cfca0a.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RO {
-  arg_0: array<u32>;
+  arg_0: array<u32>,
 };
 @group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 
diff --git a/test/tint/builtins/gen/arrayLength/cfca0a.wgsl.expected.wgsl b/test/tint/builtins/gen/arrayLength/cfca0a.wgsl.expected.wgsl
index 5780c79..5778963 100644
--- a/test/tint/builtins/gen/arrayLength/cfca0a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/arrayLength/cfca0a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RO {
-  arg_0 : array<u32>;
+  arg_0 : array<u32>,
 }
 
 @group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
diff --git a/test/tint/builtins/gen/arrayLength/eb510f.wgsl b/test/tint/builtins/gen/arrayLength/eb510f.wgsl
index a678ae0..072a29d 100644
--- a/test/tint/builtins/gen/arrayLength/eb510f.wgsl
+++ b/test/tint/builtins/gen/arrayLength/eb510f.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: array<u32>;
+  arg_0: array<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/arrayLength/eb510f.wgsl.expected.wgsl b/test/tint/builtins/gen/arrayLength/eb510f.wgsl.expected.wgsl
index fb67885..805917c 100644
--- a/test/tint/builtins/gen/arrayLength/eb510f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/arrayLength/eb510f.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : array<u32>;
+  arg_0 : array<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicAdd/8a199a.wgsl b/test/tint/builtins/gen/atomicAdd/8a199a.wgsl
index dcd02ce..d97c766 100644
--- a/test/tint/builtins/gen/atomicAdd/8a199a.wgsl
+++ b/test/tint/builtins/gen/atomicAdd/8a199a.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicAdd/8a199a.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicAdd/8a199a.wgsl.expected.wgsl
index 096bd43..c97cce1 100644
--- a/test/tint/builtins/gen/atomicAdd/8a199a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicAdd/8a199a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicAdd/d32fe4.wgsl b/test/tint/builtins/gen/atomicAdd/d32fe4.wgsl
index 1d392dd..a38605b 100644
--- a/test/tint/builtins/gen/atomicAdd/d32fe4.wgsl
+++ b/test/tint/builtins/gen/atomicAdd/d32fe4.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicAdd/d32fe4.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicAdd/d32fe4.wgsl.expected.wgsl
index 6666896..9eeac04 100644
--- a/test/tint/builtins/gen/atomicAdd/d32fe4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicAdd/d32fe4.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicAnd/152966.wgsl b/test/tint/builtins/gen/atomicAnd/152966.wgsl
index f6506d6..0387cef 100644
--- a/test/tint/builtins/gen/atomicAnd/152966.wgsl
+++ b/test/tint/builtins/gen/atomicAnd/152966.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicAnd/152966.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicAnd/152966.wgsl.expected.wgsl
index 5da1a1d..ec13db7 100644
--- a/test/tint/builtins/gen/atomicAnd/152966.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicAnd/152966.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicAnd/85a8d9.wgsl b/test/tint/builtins/gen/atomicAnd/85a8d9.wgsl
index 719459d..ea064e3 100644
--- a/test/tint/builtins/gen/atomicAnd/85a8d9.wgsl
+++ b/test/tint/builtins/gen/atomicAnd/85a8d9.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicAnd/85a8d9.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicAnd/85a8d9.wgsl.expected.wgsl
index 61780ce..3a32a76 100644
--- a/test/tint/builtins/gen/atomicAnd/85a8d9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicAnd/85a8d9.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl b/test/tint/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl
index 650f0d8..4522f72 100644
--- a/test/tint/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl
+++ b/test/tint/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.wgsl
index aa49ba9..ba2ab03 100644
--- a/test/tint/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl b/test/tint/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl
index ffa555d..76ba8f2 100644
--- a/test/tint/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl
+++ b/test/tint/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.wgsl
index 3970296..dff8dca 100644
--- a/test/tint/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicExchange/d59712.wgsl b/test/tint/builtins/gen/atomicExchange/d59712.wgsl
index a5c16a0..f825937 100644
--- a/test/tint/builtins/gen/atomicExchange/d59712.wgsl
+++ b/test/tint/builtins/gen/atomicExchange/d59712.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicExchange/d59712.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicExchange/d59712.wgsl.expected.wgsl
index 0930bd7..2e72015 100644
--- a/test/tint/builtins/gen/atomicExchange/d59712.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicExchange/d59712.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicExchange/f2e22f.wgsl b/test/tint/builtins/gen/atomicExchange/f2e22f.wgsl
index 338ddb4..d4763b8 100644
--- a/test/tint/builtins/gen/atomicExchange/f2e22f.wgsl
+++ b/test/tint/builtins/gen/atomicExchange/f2e22f.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicExchange/f2e22f.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicExchange/f2e22f.wgsl.expected.wgsl
index 79704e4..5405f25 100644
--- a/test/tint/builtins/gen/atomicExchange/f2e22f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicExchange/f2e22f.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicLoad/0806ad.wgsl b/test/tint/builtins/gen/atomicLoad/0806ad.wgsl
index f6c8578..19631ca 100644
--- a/test/tint/builtins/gen/atomicLoad/0806ad.wgsl
+++ b/test/tint/builtins/gen/atomicLoad/0806ad.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicLoad/0806ad.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicLoad/0806ad.wgsl.expected.wgsl
index 7396ee2..e761dd9 100644
--- a/test/tint/builtins/gen/atomicLoad/0806ad.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicLoad/0806ad.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicLoad/fe6cc3.wgsl b/test/tint/builtins/gen/atomicLoad/fe6cc3.wgsl
index c03d971..2f0409b 100644
--- a/test/tint/builtins/gen/atomicLoad/fe6cc3.wgsl
+++ b/test/tint/builtins/gen/atomicLoad/fe6cc3.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicLoad/fe6cc3.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicLoad/fe6cc3.wgsl.expected.wgsl
index 28eca60..f811ee3 100644
--- a/test/tint/builtins/gen/atomicLoad/fe6cc3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicLoad/fe6cc3.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicMax/51b9be.wgsl b/test/tint/builtins/gen/atomicMax/51b9be.wgsl
index ce0f800..2a86b17 100644
--- a/test/tint/builtins/gen/atomicMax/51b9be.wgsl
+++ b/test/tint/builtins/gen/atomicMax/51b9be.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicMax/51b9be.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicMax/51b9be.wgsl.expected.wgsl
index 985c763..ec37f39 100644
--- a/test/tint/builtins/gen/atomicMax/51b9be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicMax/51b9be.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicMax/92aa72.wgsl b/test/tint/builtins/gen/atomicMax/92aa72.wgsl
index 38aafe7..f3758d7 100644
--- a/test/tint/builtins/gen/atomicMax/92aa72.wgsl
+++ b/test/tint/builtins/gen/atomicMax/92aa72.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicMax/92aa72.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicMax/92aa72.wgsl.expected.wgsl
index 050d266..24dcfcc 100644
--- a/test/tint/builtins/gen/atomicMax/92aa72.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicMax/92aa72.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicMin/8e38dc.wgsl b/test/tint/builtins/gen/atomicMin/8e38dc.wgsl
index 8c89ffc..173b32d 100644
--- a/test/tint/builtins/gen/atomicMin/8e38dc.wgsl
+++ b/test/tint/builtins/gen/atomicMin/8e38dc.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicMin/8e38dc.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicMin/8e38dc.wgsl.expected.wgsl
index 445c42c..bd66a39 100644
--- a/test/tint/builtins/gen/atomicMin/8e38dc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicMin/8e38dc.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicMin/c67a74.wgsl b/test/tint/builtins/gen/atomicMin/c67a74.wgsl
index 1f2c3e0..f9f3a09 100644
--- a/test/tint/builtins/gen/atomicMin/c67a74.wgsl
+++ b/test/tint/builtins/gen/atomicMin/c67a74.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicMin/c67a74.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicMin/c67a74.wgsl.expected.wgsl
index 85296e7..96d7c2a 100644
--- a/test/tint/builtins/gen/atomicMin/c67a74.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicMin/c67a74.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicOr/5e95d4.wgsl b/test/tint/builtins/gen/atomicOr/5e95d4.wgsl
index 877a558..c06171d 100644
--- a/test/tint/builtins/gen/atomicOr/5e95d4.wgsl
+++ b/test/tint/builtins/gen/atomicOr/5e95d4.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicOr/5e95d4.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicOr/5e95d4.wgsl.expected.wgsl
index 78414eb..1d8867e 100644
--- a/test/tint/builtins/gen/atomicOr/5e95d4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicOr/5e95d4.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicOr/8d96a0.wgsl b/test/tint/builtins/gen/atomicOr/8d96a0.wgsl
index 248067b..1a3b37b 100644
--- a/test/tint/builtins/gen/atomicOr/8d96a0.wgsl
+++ b/test/tint/builtins/gen/atomicOr/8d96a0.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicOr/8d96a0.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicOr/8d96a0.wgsl.expected.wgsl
index 9ce6bd6..c9b1604 100644
--- a/test/tint/builtins/gen/atomicOr/8d96a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicOr/8d96a0.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicStore/cdc29e.wgsl b/test/tint/builtins/gen/atomicStore/cdc29e.wgsl
index 50f0599..e6815d2 100644
--- a/test/tint/builtins/gen/atomicStore/cdc29e.wgsl
+++ b/test/tint/builtins/gen/atomicStore/cdc29e.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicStore/cdc29e.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicStore/cdc29e.wgsl.expected.wgsl
index d0b2386..6da44d4 100644
--- a/test/tint/builtins/gen/atomicStore/cdc29e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicStore/cdc29e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicStore/d1e9a6.wgsl b/test/tint/builtins/gen/atomicStore/d1e9a6.wgsl
index 74463ef..a0c8c44 100644
--- a/test/tint/builtins/gen/atomicStore/d1e9a6.wgsl
+++ b/test/tint/builtins/gen/atomicStore/d1e9a6.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicStore/d1e9a6.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicStore/d1e9a6.wgsl.expected.wgsl
index 5518552..5d509ce 100644
--- a/test/tint/builtins/gen/atomicStore/d1e9a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicStore/d1e9a6.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicSub/051100.wgsl b/test/tint/builtins/gen/atomicSub/051100.wgsl
index 7a6c121..a76408a 100644
--- a/test/tint/builtins/gen/atomicSub/051100.wgsl
+++ b/test/tint/builtins/gen/atomicSub/051100.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicSub/051100.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicSub/051100.wgsl.expected.wgsl
index 27b8857..faf9784 100644
--- a/test/tint/builtins/gen/atomicSub/051100.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicSub/051100.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicSub/15bfc9.wgsl b/test/tint/builtins/gen/atomicSub/15bfc9.wgsl
index 1b0f4fe..705b85b 100644
--- a/test/tint/builtins/gen/atomicSub/15bfc9.wgsl
+++ b/test/tint/builtins/gen/atomicSub/15bfc9.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicSub/15bfc9.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicSub/15bfc9.wgsl.expected.wgsl
index 537edd1..74ec8cd 100644
--- a/test/tint/builtins/gen/atomicSub/15bfc9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicSub/15bfc9.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicXor/54510e.wgsl b/test/tint/builtins/gen/atomicXor/54510e.wgsl
index ad0809d..c7fae2d 100644
--- a/test/tint/builtins/gen/atomicXor/54510e.wgsl
+++ b/test/tint/builtins/gen/atomicXor/54510e.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<u32>;
+  arg_0: atomic<u32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicXor/54510e.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicXor/54510e.wgsl.expected.wgsl
index bc674c9..61a2419 100644
--- a/test/tint/builtins/gen/atomicXor/54510e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicXor/54510e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<u32>;
+  arg_0 : atomic<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/gen/atomicXor/c1b78c.wgsl b/test/tint/builtins/gen/atomicXor/c1b78c.wgsl
index b8a9a98..68694e3 100644
--- a/test/tint/builtins/gen/atomicXor/c1b78c.wgsl
+++ b/test/tint/builtins/gen/atomicXor/c1b78c.wgsl
@@ -23,7 +23,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 struct SB_RW {
-  arg_0: atomic<i32>;
+  arg_0: atomic<i32>,
 };
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
diff --git a/test/tint/builtins/gen/atomicXor/c1b78c.wgsl.expected.wgsl b/test/tint/builtins/gen/atomicXor/c1b78c.wgsl.expected.wgsl
index 0d49f18..219e9d4 100644
--- a/test/tint/builtins/gen/atomicXor/c1b78c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/atomicXor/c1b78c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SB_RW {
-  arg_0 : atomic<i32>;
+  arg_0 : atomic<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
diff --git a/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.wgsl b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.wgsl
index f6e2411..23d1d2b 100644
--- a/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.wgsl
+++ b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.wgsl
@@ -22,7 +22,7 @@
 
 struct vertex_main_out {
   @builtin(position)
-  tint_symbol_1_1 : vec4<f32>;
+  tint_symbol_1_1 : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.wgsl b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.wgsl
index 7590a16..3a8ac6d 100644
--- a/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.wgsl
+++ b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.wgsl
@@ -22,7 +22,7 @@
 
 struct vertex_main_out {
   @builtin(position)
-  tint_symbol_1_1 : vec4<f32>;
+  tint_symbol_1_1 : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.wgsl b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.wgsl
index deac9d0..3f2b3f9 100644
--- a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.wgsl
+++ b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.wgsl
@@ -22,7 +22,7 @@
 
 struct vertex_main_out {
   @builtin(position)
-  tint_symbol_1_1 : vec4<f32>;
+  tint_symbol_1_1 : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl
index 4a407bd..c05600b 100644
--- a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl
@@ -1,6 +1,6 @@
 struct S {
-    matrix : mat3x2<f32>;
-    vector : vec3<f32>;
+    matrix : mat3x2<f32>,
+    vector : vec3<f32>,
 };
 @group(0) @binding(0) var<uniform> data: S;
 
diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl
index 4f6b25c..3c5744e 100644
--- a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct S {
-  matrix : mat3x2<f32>;
-  vector : vec3<f32>;
+  matrix : mat3x2<f32>,
+  vector : vec3<f32>,
 }
 
 @group(0) @binding(0) var<uniform> data : S;
diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl
index f915862..2c0c966 100644
--- a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl
@@ -1,6 +1,6 @@
 struct S {
-    matrix : mat3x3<f32>;
-    vector : vec3<f32>;
+    matrix : mat3x3<f32>,
+    vector : vec3<f32>,
 };
 @group(0) @binding(0) var<uniform> data: S;
 
diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl
index 2c12345..9c51fa6 100644
--- a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct S {
-  matrix : mat3x3<f32>;
-  vector : vec3<f32>;
+  matrix : mat3x3<f32>,
+  vector : vec3<f32>,
 }
 
 @group(0) @binding(0) var<uniform> data : S;
diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl
index 5606f65..6f7e5df 100644
--- a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl
@@ -1,6 +1,6 @@
 struct S {
-    matrix : mat3x3<f32>;
-    vector : vec3<f32>;
+    matrix : mat3x3<f32>,
+    vector : vec3<f32>,
 };
 @group(0) @binding(0) var<uniform> data: S;
 
diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl
index aca7bee..6aa7aac 100644
--- a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct S {
-  matrix : mat3x3<f32>;
-  vector : vec3<f32>;
+  matrix : mat3x3<f32>,
+  vector : vec3<f32>,
 }
 
 @group(0) @binding(0) var<uniform> data : S;
diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl
index 5cceccb..be83514 100644
--- a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl
@@ -1,6 +1,6 @@
 struct S {
-    matrix : mat4x3<f32>;
-    vector : vec3<f32>;
+    matrix : mat4x3<f32>,
+    vector : vec3<f32>,
 };
 @group(0) @binding(0) var<uniform> data: S;
 
diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl
index a3bfccc..cf6fffd 100644
--- a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct S {
-  matrix : mat4x3<f32>;
-  vector : vec3<f32>;
+  matrix : mat4x3<f32>,
+  vector : vec3<f32>,
 }
 
 @group(0) @binding(0) var<uniform> data : S;
diff --git a/test/tint/expressions/literals/-inf.spvasm.expected.wgsl b/test/tint/expressions/literals/-inf.spvasm.expected.wgsl
index 738effc..2588c6b 100644
--- a/test/tint/expressions/literals/-inf.spvasm.expected.wgsl
+++ b/test/tint/expressions/literals/-inf.spvasm.expected.wgsl
@@ -7,7 +7,7 @@
 
 struct main_out {
   @location(0)
-  out_var_SV_TARGET_1 : vec4<f32>;
+  out_var_SV_TARGET_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/expressions/literals/inf.spvasm.expected.wgsl b/test/tint/expressions/literals/inf.spvasm.expected.wgsl
index 9fc866d..c18af0d 100644
--- a/test/tint/expressions/literals/inf.spvasm.expected.wgsl
+++ b/test/tint/expressions/literals/inf.spvasm.expected.wgsl
@@ -7,7 +7,7 @@
 
 struct main_out {
   @location(0)
-  out_var_SV_TARGET_1 : vec4<f32>;
+  out_var_SV_TARGET_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/expressions/literals/nan.spvasm.expected.wgsl b/test/tint/expressions/literals/nan.spvasm.expected.wgsl
index a53b01d..be2a3af 100644
--- a/test/tint/expressions/literals/nan.spvasm.expected.wgsl
+++ b/test/tint/expressions/literals/nan.spvasm.expected.wgsl
@@ -7,7 +7,7 @@
 
 struct main_out {
   @location(0)
-  out_var_SV_TARGET_1 : vec4<f32>;
+  out_var_SV_TARGET_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl
index cb779ee..7deb776 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<f32>;
+    v: vec3<f32>,
 };
 
 @group(0) @binding(0) var<uniform> U : S;
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl
index 1f87362..0293f84 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<f32>;
+  v : vec3<f32>,
 }
 
 @group(0) @binding(0) var<uniform> U : S;
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl
index 6780f9f..97eb846 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<i32>;
+    v: vec3<i32>,
 };
 
 @group(0) @binding(0) var<uniform> U : S;
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl
index a79daa4..c975c1e 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<i32>;
+  v : vec3<i32>,
 }
 
 @group(0) @binding(0) var<uniform> U : S;
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl
index afd1fa5..52efee5 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<u32>;
+    v: vec3<u32>,
 };
 
 @group(0) @binding(0) var<uniform> U : S;
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl
index 836c617..b7a431a 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<u32>;
+  v : vec3<u32>,
 }
 
 @group(0) @binding(0) var<uniform> U : S;
diff --git a/test/tint/expressions/swizzle/read/vec3/f32.wgsl b/test/tint/expressions/swizzle/read/vec3/f32.wgsl
index 77a78f0..d9d4445 100644
--- a/test/tint/expressions/swizzle/read/vec3/f32.wgsl
+++ b/test/tint/expressions/swizzle/read/vec3/f32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<f32>;
+    v: vec3<f32>,
 };
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.wgsl
index b3862ad..9a999bb 100644
--- a/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<f32>;
+  v : vec3<f32>,
 }
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/read/vec3/i32.wgsl b/test/tint/expressions/swizzle/read/vec3/i32.wgsl
index fca1add..297c6b6 100644
--- a/test/tint/expressions/swizzle/read/vec3/i32.wgsl
+++ b/test/tint/expressions/swizzle/read/vec3/i32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<i32>;
+    v: vec3<i32>,
 };
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.wgsl
index 72b0026..fc4122f 100644
--- a/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<i32>;
+  v : vec3<i32>,
 }
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/read/vec3/u32.wgsl b/test/tint/expressions/swizzle/read/vec3/u32.wgsl
index 73dbbaf..ca0906f 100644
--- a/test/tint/expressions/swizzle/read/vec3/u32.wgsl
+++ b/test/tint/expressions/swizzle/read/vec3/u32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<u32>;
+    v: vec3<u32>,
 };
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.wgsl
index 1756e99..569ffae 100644
--- a/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<u32>;
+  v : vec3<u32>,
 }
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl
index 623d785..7733e98 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<f32>;
+    v: vec3<f32>,
 };
 
 @group(0) @binding(0) var<storage, read_write> U : S;
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl
index b5f5abc..4d6b7a8 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<f32>;
+  v : vec3<f32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> U : S;
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl
index 5441f0a..355f6d2 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<i32>;
+    v: vec3<i32>,
 };
 
 @group(0) @binding(0) var<storage, read_write> U : S;
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl
index 762409a..5b2331d 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<i32>;
+  v : vec3<i32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> U : S;
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl
index 0a3ee66..660a13b 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<u32>;
+    v: vec3<u32>,
 };
 
 @group(0) @binding(0) var<storage, read_write> U : S;
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl
index e87b551..5ad3948 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<u32>;
+  v : vec3<u32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> U : S;
diff --git a/test/tint/expressions/swizzle/write/vec3/f32.wgsl b/test/tint/expressions/swizzle/write/vec3/f32.wgsl
index c7d1633..c947944 100644
--- a/test/tint/expressions/swizzle/write/vec3/f32.wgsl
+++ b/test/tint/expressions/swizzle/write/vec3/f32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<f32>;
+    v: vec3<f32>,
 };
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.wgsl
index 9eab0b0..2757b4c 100644
--- a/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<f32>;
+  v : vec3<f32>,
 }
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/write/vec3/i32.wgsl b/test/tint/expressions/swizzle/write/vec3/i32.wgsl
index 9abf24a..f97592c 100644
--- a/test/tint/expressions/swizzle/write/vec3/i32.wgsl
+++ b/test/tint/expressions/swizzle/write/vec3/i32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<i32>;
+    v: vec3<i32>,
 };
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.wgsl
index bd00bb3..d786523 100644
--- a/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<i32>;
+  v : vec3<i32>,
 }
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/write/vec3/u32.wgsl b/test/tint/expressions/swizzle/write/vec3/u32.wgsl
index 427e61e..c213f8e 100644
--- a/test/tint/expressions/swizzle/write/vec3/u32.wgsl
+++ b/test/tint/expressions/swizzle/write/vec3/u32.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    v: vec3<u32>;
+    v: vec3<u32>,
 };
 
 var<private> P : S;
diff --git a/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.wgsl
index 0323375..14f48bd 100644
--- a/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  v : vec3<u32>;
+  v : vec3<u32>,
 }
 
 var<private> P : S;
diff --git a/test/tint/expressions/zero_init/array/struct.wgsl b/test/tint/expressions/zero_init/array/struct.wgsl
index e563640..2a57da3 100644
--- a/test/tint/expressions/zero_init/array/struct.wgsl
+++ b/test/tint/expressions/zero_init/array/struct.wgsl
@@ -1,8 +1,8 @@
 struct S {
-    i : i32;
-    u : u32;
-    f : f32;
-    b : bool;
+    i : i32,
+    u : u32,
+    f : f32,
+    b : bool,
 };
 
 fn f() {
diff --git a/test/tint/expressions/zero_init/array/struct.wgsl.expected.wgsl b/test/tint/expressions/zero_init/array/struct.wgsl.expected.wgsl
index c864d0f..94f2846 100644
--- a/test/tint/expressions/zero_init/array/struct.wgsl.expected.wgsl
+++ b/test/tint/expressions/zero_init/array/struct.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 struct S {
-  i : i32;
-  u : u32;
-  f : f32;
-  b : bool;
+  i : i32,
+  u : u32,
+  f : f32,
+  b : bool,
 }
 
 fn f() {
diff --git a/test/tint/expressions/zero_init/struct/array.wgsl b/test/tint/expressions/zero_init/struct/array.wgsl
index 148b457..31610db 100644
--- a/test/tint/expressions/zero_init/struct/array.wgsl
+++ b/test/tint/expressions/zero_init/struct/array.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    a : array<f32, 4>;
+    a : array<f32, 4>,
 };
 
 fn f() {
diff --git a/test/tint/expressions/zero_init/struct/array.wgsl.expected.wgsl b/test/tint/expressions/zero_init/struct/array.wgsl.expected.wgsl
index 97b1cce..8c85bc6 100644
--- a/test/tint/expressions/zero_init/struct/array.wgsl.expected.wgsl
+++ b/test/tint/expressions/zero_init/struct/array.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : array<f32, 4>;
+  a : array<f32, 4>,
 }
 
 fn f() {
diff --git a/test/tint/expressions/zero_init/struct/scalar.wgsl b/test/tint/expressions/zero_init/struct/scalar.wgsl
index a1c58b3..6d562d4 100644
--- a/test/tint/expressions/zero_init/struct/scalar.wgsl
+++ b/test/tint/expressions/zero_init/struct/scalar.wgsl
@@ -1,8 +1,8 @@
 struct S {
-    i : i32;
-    u : u32;
-    f : f32;
-    b : bool;
+    i : i32,
+    u : u32,
+    f : f32,
+    b : bool,
 };
 
 fn f() {
diff --git a/test/tint/expressions/zero_init/struct/scalar.wgsl.expected.wgsl b/test/tint/expressions/zero_init/struct/scalar.wgsl.expected.wgsl
index cd48ab4..7eb6c6a 100644
--- a/test/tint/expressions/zero_init/struct/scalar.wgsl.expected.wgsl
+++ b/test/tint/expressions/zero_init/struct/scalar.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 struct S {
-  i : i32;
-  u : u32;
-  f : f32;
-  b : bool;
+  i : i32,
+  u : u32,
+  f : f32,
+  b : bool,
 }
 
 fn f() {
diff --git a/test/tint/identifiers/underscore/double/struct.wgsl b/test/tint/identifiers/underscore/double/struct.wgsl
index 5f03712..81ecd8c 100644
--- a/test/tint/identifiers/underscore/double/struct.wgsl
+++ b/test/tint/identifiers/underscore/double/struct.wgsl
@@ -1,8 +1,8 @@
 struct a {
-  b : i32;
+  b : i32,
 };
 struct a__ {
-  b__ : i32;
+  b__ : i32,
 };
 fn f() {
   let c = a__();
diff --git a/test/tint/identifiers/underscore/double/struct.wgsl.expected.wgsl b/test/tint/identifiers/underscore/double/struct.wgsl.expected.wgsl
index ad84d66..d924dd7 100644
--- a/test/tint/identifiers/underscore/double/struct.wgsl.expected.wgsl
+++ b/test/tint/identifiers/underscore/double/struct.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct a {
-  b : i32;
+  b : i32,
 }
 
 struct a__ {
-  b__ : i32;
+  b__ : i32,
 }
 
 fn f() {
diff --git a/test/tint/identifiers/underscore/prefix/lower/struct.wgsl b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl
index 5b03cd7..bfda93f 100644
--- a/test/tint/identifiers/underscore/prefix/lower/struct.wgsl
+++ b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl
@@ -1,8 +1,8 @@
 struct a {
-  b : i32;
+  b : i32,
 };
 struct _a {
-  _b : i32;
+  _b : i32,
 };
 fn f() {
   let c = _a();
diff --git a/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.wgsl b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.wgsl
index a995390..e0a79a7 100644
--- a/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.wgsl
+++ b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct a {
-  b : i32;
+  b : i32,
 }
 
 struct _a {
-  _b : i32;
+  _b : i32,
 }
 
 fn f() {
diff --git a/test/tint/identifiers/underscore/prefix/upper/struct.wgsl b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl
index 0afc824..c2f6efa 100644
--- a/test/tint/identifiers/underscore/prefix/upper/struct.wgsl
+++ b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl
@@ -1,8 +1,8 @@
 struct A {
-  B : i32;
+  B : i32,
 };
 struct _A {
-  _B : i32;
+  _B : i32,
 };
 fn f() {
   let c = _A();
diff --git a/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.wgsl b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.wgsl
index 97a6d4c..a313040 100644
--- a/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.wgsl
+++ b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct A {
-  B : i32;
+  B : i32,
 }
 
 struct _A {
-  _B : i32;
+  _B : i32,
 }
 
 fn f() {
diff --git a/test/tint/layout/storage/mat2x2/f32.wgsl b/test/tint/layout/storage/mat2x2/f32.wgsl
index 3b2c0bf..67afba0 100644
--- a/test/tint/layout/storage/mat2x2/f32.wgsl
+++ b/test/tint/layout/storage/mat2x2/f32.wgsl
@@ -1,5 +1,5 @@
 struct SSBO {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 };
 @group(0) @binding(0) var<storage, read_write> ssbo : SSBO;
 
diff --git a/test/tint/layout/storage/mat2x2/f32.wgsl.expected.wgsl b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.wgsl
index 2cdd7f6..0a3e997 100644
--- a/test/tint/layout/storage/mat2x2/f32.wgsl.expected.wgsl
+++ b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct SSBO {
-  m : mat2x2<f32>;
+  m : mat2x2<f32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> ssbo : SSBO;
diff --git a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
index 27389a7..8033454 100644
--- a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
+++ b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
@@ -1,10 +1,10 @@
 struct strided_arr {
   @size(16)
-  el : vec2<f32>;
+  el : vec2<f32>,
 }
 
 struct SSBO {
-  m : array<strided_arr, 2u>;
+  m : array<strided_arr, 2u>,
 }
 
 @group(0) @binding(0) var<storage, read_write> ssbo : SSBO;
diff --git a/test/tint/let/global/global.wgsl b/test/tint/let/global/global.wgsl
index 1dd906d..cbe6b2f 100644
--- a/test/tint/let/global/global.wgsl
+++ b/test/tint/let/global/global.wgsl
@@ -1,5 +1,5 @@
 struct MyStruct {

-    f1 : f32;

+    f1 : f32,

 };

 

 type MyArray = array<f32, 10>;

diff --git a/test/tint/let/global/global.wgsl.expected.wgsl b/test/tint/let/global/global.wgsl.expected.wgsl
index 60a1e36..b1e4d6e 100644
--- a/test/tint/let/global/global.wgsl.expected.wgsl
+++ b/test/tint/let/global/global.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct MyStruct {
-  f1 : f32;
+  f1 : f32,
 }
 
 type MyArray = array<f32, 10>;
diff --git a/test/tint/let/inferred/function.wgsl b/test/tint/let/inferred/function.wgsl
index cb66845..7430504 100644
--- a/test/tint/let/inferred/function.wgsl
+++ b/test/tint/let/inferred/function.wgsl
@@ -1,5 +1,5 @@
 struct MyStruct {

-    f1 : f32;

+    f1 : f32,

 };

 

 type MyArray = array<f32, 10>;

diff --git a/test/tint/let/inferred/function.wgsl.expected.wgsl b/test/tint/let/inferred/function.wgsl.expected.wgsl
index e2f4653..34c18ff 100644
--- a/test/tint/let/inferred/function.wgsl.expected.wgsl
+++ b/test/tint/let/inferred/function.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct MyStruct {
-  f1 : f32;
+  f1 : f32,
 }
 
 type MyArray = array<f32, 10>;
diff --git a/test/tint/out_of_order_decls/alias/struct.wgsl b/test/tint/out_of_order_decls/alias/struct.wgsl
index 20f80a4..923353b 100644
--- a/test/tint/out_of_order_decls/alias/struct.wgsl
+++ b/test/tint/out_of_order_decls/alias/struct.wgsl
@@ -1,7 +1,7 @@
 type T = S;
 
 struct S {
-  m : i32;
+  m : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/out_of_order_decls/alias/struct.wgsl.expected.wgsl b/test/tint/out_of_order_decls/alias/struct.wgsl.expected.wgsl
index 20f80a4..923353b 100644
--- a/test/tint/out_of_order_decls/alias/struct.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/alias/struct.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 type T = S;
 
 struct S {
-  m : i32;
+  m : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/out_of_order_decls/array/struct.wgsl b/test/tint/out_of_order_decls/array/struct.wgsl
index ab88948..70d1560 100644
--- a/test/tint/out_of_order_decls/array/struct.wgsl
+++ b/test/tint/out_of_order_decls/array/struct.wgsl
@@ -1,6 +1,6 @@
 var<private> A : array<S, 4>;
 struct S {
-  m : i32;
+  m : i32,
 };
 
 @stage(fragment)
diff --git a/test/tint/out_of_order_decls/array/struct.wgsl.expected.wgsl b/test/tint/out_of_order_decls/array/struct.wgsl.expected.wgsl
index 3e57163..30d0f58 100644
--- a/test/tint/out_of_order_decls/array/struct.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/array/struct.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 var<private> A : array<S, 4>;
 
 struct S {
-  m : i32;
+  m : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/out_of_order_decls/struct/alias.wgsl b/test/tint/out_of_order_decls/struct/alias.wgsl
index e225a73..57dd249 100644
--- a/test/tint/out_of_order_decls/struct/alias.wgsl
+++ b/test/tint/out_of_order_decls/struct/alias.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  m : T;
+  m : T,
 }
 
 type T = i32;
diff --git a/test/tint/out_of_order_decls/struct/alias.wgsl.expected.wgsl b/test/tint/out_of_order_decls/struct/alias.wgsl.expected.wgsl
index e225a73..57dd249 100644
--- a/test/tint/out_of_order_decls/struct/alias.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/struct/alias.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  m : T;
+  m : T,
 }
 
 type T = i32;
diff --git a/test/tint/out_of_order_decls/struct/struct.wgsl b/test/tint/out_of_order_decls/struct/struct.wgsl
index d4e405f..44e2030 100644
--- a/test/tint/out_of_order_decls/struct/struct.wgsl
+++ b/test/tint/out_of_order_decls/struct/struct.wgsl
@@ -1,9 +1,9 @@
 struct S1 {
-  m : S2;
+  m : S2,
 }
 
 struct S2 {
-  m : i32;
+  m : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/out_of_order_decls/struct/struct.wgsl.expected.wgsl b/test/tint/out_of_order_decls/struct/struct.wgsl.expected.wgsl
index d4e405f..44e2030 100644
--- a/test/tint/out_of_order_decls/struct/struct.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/struct/struct.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct S1 {
-  m : S2;
+  m : S2,
 }
 
 struct S2 {
-  m : i32;
+  m : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.wgsl b/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.wgsl
index 6d6d8e6..83c4b8e 100644
--- a/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 var<private> V : S;
diff --git a/test/tint/ptr_ref/load/global/struct_field.wgsl b/test/tint/ptr_ref/load/global/struct_field.wgsl
index e4341ca..071ef62 100644
--- a/test/tint/ptr_ref/load/global/struct_field.wgsl
+++ b/test/tint/ptr_ref/load/global/struct_field.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 };
 
 var<private> V : S;
diff --git a/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.wgsl b/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.wgsl
index 59395f9..4813b5a 100644
--- a/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 var<private> V : S;
diff --git a/test/tint/ptr_ref/load/local/ptr_storage.wgsl b/test/tint/ptr_ref/load/local/ptr_storage.wgsl
index e50f835..b760937 100644
--- a/test/tint/ptr_ref/load/local/ptr_storage.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_storage.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : i32;
+  a : i32,
 };
 
 @group(0) @binding(0)
diff --git a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl
index ecef085..248519a 100644
--- a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : i32;
+  a : i32,
 }
 
 @group(0) @binding(0) var<storage, read_write> v : S;
diff --git a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl
index 49328ac..749a6e8 100644
--- a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : i32;
+  a : i32,
 };
 
 @group(0) @binding(0)
diff --git a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl
index dabfd63..e8af559 100644
--- a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : i32;
+  a : i32,
 }
 
 @group(0) @binding(0) var<uniform> v : S;
diff --git a/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.wgsl b/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.wgsl
index 9b15ec1..2699cbc 100644
--- a/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 fn main_1() {
diff --git a/test/tint/ptr_ref/load/local/struct_field.wgsl b/test/tint/ptr_ref/load/local/struct_field.wgsl
index 60b9af5..e2a02fb 100644
--- a/test/tint/ptr_ref/load/local/struct_field.wgsl
+++ b/test/tint/ptr_ref/load/local/struct_field.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 };
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.wgsl
index 056bf95..03fab9e 100644
--- a/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.wgsl b/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.wgsl
index 7ed0977..0a63914 100644
--- a/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 var<private> V : S;
diff --git a/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.wgsl b/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.wgsl
index bcc1680..44c8b63 100644
--- a/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 fn main_1() {
diff --git a/test/tint/samples/compute_boids.wgsl b/test/tint/samples/compute_boids.wgsl
index 269ac5d..fdb9386 100644
--- a/test/tint/samples/compute_boids.wgsl
+++ b/test/tint/samples/compute_boids.wgsl
@@ -35,22 +35,22 @@
 
 // compute shader
 struct Particle {
-  pos : vec2<f32>;
-  vel : vec2<f32>;
+  pos : vec2<f32>,
+  vel : vec2<f32>,
 };
 
  struct SimParams {
-  deltaT : f32;
-  rule1Distance : f32;
-  rule2Distance : f32;
-  rule3Distance : f32;
-  rule1Scale : f32;
-  rule2Scale : f32;
-  rule3Scale : f32;
+  deltaT : f32,
+  rule1Distance : f32,
+  rule2Distance : f32,
+  rule3Distance : f32,
+  rule1Scale : f32,
+  rule2Scale : f32,
+  rule3Scale : f32,
 };
 
  struct Particles {
-  particles : array<Particle, 5>;
+  particles : array<Particle, 5>,
 };
 
 @binding(0) @group(0) var<uniform> params : SimParams;
diff --git a/test/tint/samples/compute_boids.wgsl.expected.wgsl b/test/tint/samples/compute_boids.wgsl.expected.wgsl
index 5abf9fa..45ef30b 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.wgsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.wgsl
@@ -11,22 +11,22 @@
 }
 
 struct Particle {
-  pos : vec2<f32>;
-  vel : vec2<f32>;
+  pos : vec2<f32>,
+  vel : vec2<f32>,
 }
 
 struct SimParams {
-  deltaT : f32;
-  rule1Distance : f32;
-  rule2Distance : f32;
-  rule3Distance : f32;
-  rule1Scale : f32;
-  rule2Scale : f32;
-  rule3Scale : f32;
+  deltaT : f32,
+  rule1Distance : f32,
+  rule2Distance : f32,
+  rule3Distance : f32,
+  rule1Scale : f32,
+  rule2Scale : f32,
+  rule3Scale : f32,
 }
 
 struct Particles {
-  particles : array<Particle, 5>;
+  particles : array<Particle, 5>,
 }
 
 @binding(0) @group(0) var<uniform> params : SimParams;
diff --git a/test/tint/samples/cube.wgsl b/test/tint/samples/cube.wgsl
index 93519e4..a894a2f 100644
--- a/test/tint/samples/cube.wgsl
+++ b/test/tint/samples/cube.wgsl
@@ -14,19 +14,19 @@
 
 // Vertex shader
  struct Uniforms {
-  modelViewProjectionMatrix : mat4x4<f32>;
+  modelViewProjectionMatrix : mat4x4<f32>,
 };
 
 @binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
 struct VertexInput {
-  @location(0) cur_position : vec4<f32>;
-  @location(1) color : vec4<f32>;
+  @location(0) cur_position : vec4<f32>,
+  @location(1) color : vec4<f32>,
 };
 
 struct VertexOutput {
-  @location(0) vtxFragColor : vec4<f32>;
-  @builtin(position) Position : vec4<f32>;
+  @location(0) vtxFragColor : vec4<f32>,
+  @builtin(position) Position : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/samples/cube.wgsl.expected.wgsl b/test/tint/samples/cube.wgsl.expected.wgsl
index ba0371f..4014881 100644
--- a/test/tint/samples/cube.wgsl.expected.wgsl
+++ b/test/tint/samples/cube.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 struct Uniforms {
-  modelViewProjectionMatrix : mat4x4<f32>;
+  modelViewProjectionMatrix : mat4x4<f32>,
 }
 
 @binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
 struct VertexInput {
   @location(0)
-  cur_position : vec4<f32>;
+  cur_position : vec4<f32>,
   @location(1)
-  color : vec4<f32>;
+  color : vec4<f32>,
 }
 
 struct VertexOutput {
   @location(0)
-  vtxFragColor : vec4<f32>;
+  vtxFragColor : vec4<f32>,
   @builtin(position)
-  Position : vec4<f32>;
+  Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/samples/simple_vertex.spvasm.expected.wgsl b/test/tint/samples/simple_vertex.spvasm.expected.wgsl
index 91ccaf9..3aaf1ef 100644
--- a/test/tint/samples/simple_vertex.spvasm.expected.wgsl
+++ b/test/tint/samples/simple_vertex.spvasm.expected.wgsl
@@ -7,7 +7,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/shader_io/compute_input_builtins_struct.wgsl b/test/tint/shader_io/compute_input_builtins_struct.wgsl
index 968a1fa..336e822 100644
--- a/test/tint/shader_io/compute_input_builtins_struct.wgsl
+++ b/test/tint/shader_io/compute_input_builtins_struct.wgsl
@@ -1,9 +1,9 @@
 struct ComputeInputs {
-  @builtin(local_invocation_id) local_invocation_id : vec3<u32>;
-  @builtin(local_invocation_index) local_invocation_index : u32;
-  @builtin(global_invocation_id) global_invocation_id : vec3<u32>;
-  @builtin(workgroup_id) workgroup_id : vec3<u32>;
-  @builtin(num_workgroups) num_workgroups : vec3<u32>;
+  @builtin(local_invocation_id) local_invocation_id : vec3<u32>,
+  @builtin(local_invocation_index) local_invocation_index : u32,
+  @builtin(global_invocation_id) global_invocation_id : vec3<u32>,
+  @builtin(workgroup_id) workgroup_id : vec3<u32>,
+  @builtin(num_workgroups) num_workgroups : vec3<u32>,
 };
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
index 08660cc..da12569 100644
--- a/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
@@ -1,14 +1,14 @@
 struct ComputeInputs {
   @builtin(local_invocation_id)
-  local_invocation_id : vec3<u32>;
+  local_invocation_id : vec3<u32>,
   @builtin(local_invocation_index)
-  local_invocation_index : u32;
+  local_invocation_index : u32,
   @builtin(global_invocation_id)
-  global_invocation_id : vec3<u32>;
+  global_invocation_id : vec3<u32>,
   @builtin(workgroup_id)
-  workgroup_id : vec3<u32>;
+  workgroup_id : vec3<u32>,
   @builtin(num_workgroups)
-  num_workgroups : vec3<u32>;
+  num_workgroups : vec3<u32>,
 }
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/shader_io/compute_input_mixed.wgsl b/test/tint/shader_io/compute_input_mixed.wgsl
index b46ff00..7142431 100644
--- a/test/tint/shader_io/compute_input_mixed.wgsl
+++ b/test/tint/shader_io/compute_input_mixed.wgsl
@@ -1,8 +1,8 @@
 struct ComputeInputs0 {
-  @builtin(local_invocation_id) local_invocation_id : vec3<u32>;
+  @builtin(local_invocation_id) local_invocation_id : vec3<u32>,
 };
 struct ComputeInputs1 {
-  @builtin(workgroup_id) workgroup_id : vec3<u32>;
+  @builtin(workgroup_id) workgroup_id : vec3<u32>,
 };
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/shader_io/compute_input_mixed.wgsl.expected.wgsl b/test/tint/shader_io/compute_input_mixed.wgsl.expected.wgsl
index 56cd363..b84448a 100644
--- a/test/tint/shader_io/compute_input_mixed.wgsl.expected.wgsl
+++ b/test/tint/shader_io/compute_input_mixed.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
 struct ComputeInputs0 {
   @builtin(local_invocation_id)
-  local_invocation_id : vec3<u32>;
+  local_invocation_id : vec3<u32>,
 }
 
 struct ComputeInputs1 {
   @builtin(workgroup_id)
-  workgroup_id : vec3<u32>;
+  workgroup_id : vec3<u32>,
 }
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/shader_io/fragment_input_builtins_struct.wgsl b/test/tint/shader_io/fragment_input_builtins_struct.wgsl
index ba833db..abaa641 100644
--- a/test/tint/shader_io/fragment_input_builtins_struct.wgsl
+++ b/test/tint/shader_io/fragment_input_builtins_struct.wgsl
@@ -1,8 +1,8 @@
 struct FragmentInputs {
-  @builtin(position) position : vec4<f32>;
-  @builtin(front_facing) front_facing : bool;
-  @builtin(sample_index) sample_index : u32;
-  @builtin(sample_mask) sample_mask : u32;
+  @builtin(position) position : vec4<f32>,
+  @builtin(front_facing) front_facing : bool,
+  @builtin(sample_index) sample_index : u32,
+  @builtin(sample_mask) sample_mask : u32,
 };
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
index 5eddd12..2084cac 100644
--- a/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
 struct FragmentInputs {
   @builtin(position)
-  position : vec4<f32>;
+  position : vec4<f32>,
   @builtin(front_facing)
-  front_facing : bool;
+  front_facing : bool,
   @builtin(sample_index)
-  sample_index : u32;
+  sample_index : u32,
   @builtin(sample_mask)
-  sample_mask : u32;
+  sample_mask : u32,
 }
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_input_locations_struct.wgsl b/test/tint/shader_io/fragment_input_locations_struct.wgsl
index e5e4bd5..50fb1f7 100644
--- a/test/tint/shader_io/fragment_input_locations_struct.wgsl
+++ b/test/tint/shader_io/fragment_input_locations_struct.wgsl
@@ -1,8 +1,8 @@
 struct FragmentInputs {
-  @location(0) @interpolate(flat) loc0 : i32;
-  @location(1) @interpolate(flat) loc1 : u32;
-  @location(2) loc2 : f32;
-  @location(3) loc3 : vec4<f32>;
+  @location(0) @interpolate(flat) loc0 : i32,
+  @location(1) @interpolate(flat) loc1 : u32,
+  @location(2) loc2 : f32,
+  @location(3) loc3 : vec4<f32>,
 };
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl b/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
index d4a9ebb..4cbe800 100644
--- a/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
 struct FragmentInputs {
   @location(0) @interpolate(flat)
-  loc0 : i32;
+  loc0 : i32,
   @location(1) @interpolate(flat)
-  loc1 : u32;
+  loc1 : u32,
   @location(2)
-  loc2 : f32;
+  loc2 : f32,
   @location(3)
-  loc3 : vec4<f32>;
+  loc3 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_input_mixed.wgsl b/test/tint/shader_io/fragment_input_mixed.wgsl
index 2bbc728..8a8c8e2 100644
--- a/test/tint/shader_io/fragment_input_mixed.wgsl
+++ b/test/tint/shader_io/fragment_input_mixed.wgsl
@@ -1,10 +1,10 @@
 struct FragmentInputs0 {
-  @builtin(position) position : vec4<f32>;
-  @location(0) @interpolate(flat) loc0 : i32;
+  @builtin(position) position : vec4<f32>,
+  @location(0) @interpolate(flat) loc0 : i32,
 };
 struct FragmentInputs1 {
-  @location(3) loc3 : vec4<f32>;
-  @builtin(sample_mask) sample_mask : u32;
+  @location(3) loc3 : vec4<f32>,
+  @builtin(sample_mask) sample_mask : u32,
 };
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_input_mixed.wgsl.expected.wgsl b/test/tint/shader_io/fragment_input_mixed.wgsl.expected.wgsl
index 78911e6..1734452 100644
--- a/test/tint/shader_io/fragment_input_mixed.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_input_mixed.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct FragmentInputs0 {
   @builtin(position)
-  position : vec4<f32>;
+  position : vec4<f32>,
   @location(0) @interpolate(flat)
-  loc0 : i32;
+  loc0 : i32,
 }
 
 struct FragmentInputs1 {
   @location(3)
-  loc3 : vec4<f32>;
+  loc3 : vec4<f32>,
   @builtin(sample_mask)
-  sample_mask : u32;
+  sample_mask : u32,
 }
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_output_builtins_struct.wgsl b/test/tint/shader_io/fragment_output_builtins_struct.wgsl
index a67765f..8ef212d 100644
--- a/test/tint/shader_io/fragment_output_builtins_struct.wgsl
+++ b/test/tint/shader_io/fragment_output_builtins_struct.wgsl
@@ -1,6 +1,6 @@
 struct FragmentOutputs {
-  @builtin(frag_depth) frag_depth : f32;
-  @builtin(sample_mask) sample_mask : u32;
+  @builtin(frag_depth) frag_depth : f32,
+  @builtin(sample_mask) sample_mask : u32,
 };
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
index 86551d3..500a094 100644
--- a/test/tint/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 struct FragmentOutputs {
   @builtin(frag_depth)
-  frag_depth : f32;
+  frag_depth : f32,
   @builtin(sample_mask)
-  sample_mask : u32;
+  sample_mask : u32,
 }
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_output_locations_struct.wgsl b/test/tint/shader_io/fragment_output_locations_struct.wgsl
index 9d7c9c7..440a4ad 100644
--- a/test/tint/shader_io/fragment_output_locations_struct.wgsl
+++ b/test/tint/shader_io/fragment_output_locations_struct.wgsl
@@ -1,8 +1,8 @@
 struct FragmentOutputs {
-  @location(0) loc0 : i32;
-  @location(1) loc1 : u32;
-  @location(2) loc2 : f32;
-  @location(3) loc3 : vec4<f32>;
+  @location(0) loc0 : i32,
+  @location(1) loc1 : u32,
+  @location(2) loc2 : f32,
+  @location(3) loc3 : vec4<f32>,
 };
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl b/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
index 5196236..b1eee07 100644
--- a/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
 struct FragmentOutputs {
   @location(0)
-  loc0 : i32;
+  loc0 : i32,
   @location(1)
-  loc1 : u32;
+  loc1 : u32,
   @location(2)
-  loc2 : f32;
+  loc2 : f32,
   @location(3)
-  loc3 : vec4<f32>;
+  loc3 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_output_mixed.wgsl b/test/tint/shader_io/fragment_output_mixed.wgsl
index 58fe80b..49180ff 100644
--- a/test/tint/shader_io/fragment_output_mixed.wgsl
+++ b/test/tint/shader_io/fragment_output_mixed.wgsl
@@ -1,10 +1,10 @@
 struct FragmentOutputs {
-  @location(0) loc0 : i32;
-  @builtin(frag_depth) frag_depth : f32;
-  @location(1) loc1 : u32;
-  @location(2) loc2 : f32;
-  @builtin(sample_mask) sample_mask : u32;
-  @location(3) loc3 : vec4<f32>;
+  @location(0) loc0 : i32,
+  @builtin(frag_depth) frag_depth : f32,
+  @location(1) loc1 : u32,
+  @location(2) loc2 : f32,
+  @builtin(sample_mask) sample_mask : u32,
+  @location(3) loc3 : vec4<f32>,
 };
 
 @stage(fragment)
diff --git a/test/tint/shader_io/fragment_output_mixed.wgsl.expected.wgsl b/test/tint/shader_io/fragment_output_mixed.wgsl.expected.wgsl
index 3cc71b6..b622a16 100644
--- a/test/tint/shader_io/fragment_output_mixed.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_output_mixed.wgsl.expected.wgsl
@@ -1,16 +1,16 @@
 struct FragmentOutputs {
   @location(0)
-  loc0 : i32;
+  loc0 : i32,
   @builtin(frag_depth)
-  frag_depth : f32;
+  frag_depth : f32,
   @location(1)
-  loc1 : u32;
+  loc1 : u32,
   @location(2)
-  loc2 : f32;
+  loc2 : f32,
   @builtin(sample_mask)
-  sample_mask : u32;
+  sample_mask : u32,
   @location(3)
-  loc3 : vec4<f32>;
+  loc3 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/shader_io/interpolate_input_struct.wgsl b/test/tint/shader_io/interpolate_input_struct.wgsl
index 5f5c8c1..46546a4 100644
--- a/test/tint/shader_io/interpolate_input_struct.wgsl
+++ b/test/tint/shader_io/interpolate_input_struct.wgsl
@@ -1,12 +1,12 @@
 struct In {
-  @location(0) none : f32;
-  @location(1) @interpolate(flat) flat : f32;
-  @location(2) @interpolate(perspective, center) perspective_center : f32;
-  @location(3) @interpolate(perspective, centroid) perspective_centroid : f32;
-  @location(4) @interpolate(perspective, sample) perspective_sample : f32;
-  @location(5) @interpolate(linear, center) linear_center : f32;
-  @location(6) @interpolate(linear, centroid) linear_centroid : f32;
-  @location(7) @interpolate(linear, sample) linear_sample : f32;
+  @location(0) none : f32,
+  @location(1) @interpolate(flat) flat : f32,
+  @location(2) @interpolate(perspective, center) perspective_center : f32,
+  @location(3) @interpolate(perspective, centroid) perspective_centroid : f32,
+  @location(4) @interpolate(perspective, sample) perspective_sample : f32,
+  @location(5) @interpolate(linear, center) linear_center : f32,
+  @location(6) @interpolate(linear, centroid) linear_centroid : f32,
+  @location(7) @interpolate(linear, sample) linear_sample : f32,
 };
 
 @stage(fragment)
diff --git a/test/tint/shader_io/interpolate_input_struct.wgsl.expected.wgsl b/test/tint/shader_io/interpolate_input_struct.wgsl.expected.wgsl
index 3a34745..d1b2b52 100644
--- a/test/tint/shader_io/interpolate_input_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/interpolate_input_struct.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
 struct In {
   @location(0)
-  none : f32;
+  none : f32,
   @location(1) @interpolate(flat)
-  flat : f32;
+  flat : f32,
   @location(2) @interpolate(perspective, center)
-  perspective_center : f32;
+  perspective_center : f32,
   @location(3) @interpolate(perspective, centroid)
-  perspective_centroid : f32;
+  perspective_centroid : f32,
   @location(4) @interpolate(perspective, sample)
-  perspective_sample : f32;
+  perspective_sample : f32,
   @location(5) @interpolate(linear, center)
-  linear_center : f32;
+  linear_center : f32,
   @location(6) @interpolate(linear, centroid)
-  linear_centroid : f32;
+  linear_centroid : f32,
   @location(7) @interpolate(linear, sample)
-  linear_sample : f32;
+  linear_sample : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/shader_io/interpolate_integers.wgsl b/test/tint/shader_io/interpolate_integers.wgsl
index f961c8a..2d93727 100644
--- a/test/tint/shader_io/interpolate_integers.wgsl
+++ b/test/tint/shader_io/interpolate_integers.wgsl
@@ -1,9 +1,9 @@
 struct Interface {
-  @location(0) @interpolate(flat) i : i32;
-  @location(1) @interpolate(flat) u : u32;
-  @location(2) @interpolate(flat) vi : vec4<i32>;
-  @location(3) @interpolate(flat) vu : vec4<u32>;
-  @builtin(position) pos : vec4<f32>;
+  @location(0) @interpolate(flat) i : i32,
+  @location(1) @interpolate(flat) u : u32,
+  @location(2) @interpolate(flat) vi : vec4<i32>,
+  @location(3) @interpolate(flat) vu : vec4<u32>,
+  @builtin(position) pos : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/shader_io/interpolate_integers.wgsl.expected.wgsl b/test/tint/shader_io/interpolate_integers.wgsl.expected.wgsl
index a6efd12..65f15f9 100644
--- a/test/tint/shader_io/interpolate_integers.wgsl.expected.wgsl
+++ b/test/tint/shader_io/interpolate_integers.wgsl.expected.wgsl
@@ -1,14 +1,14 @@
 struct Interface {
   @location(0) @interpolate(flat)
-  i : i32;
+  i : i32,
   @location(1) @interpolate(flat)
-  u : u32;
+  u : u32,
   @location(2) @interpolate(flat)
-  vi : vec4<i32>;
+  vi : vec4<i32>,
   @location(3) @interpolate(flat)
-  vu : vec4<u32>;
+  vu : vec4<u32>,
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/shader_io/interpolate_return_struct.wgsl b/test/tint/shader_io/interpolate_return_struct.wgsl
index 0cff79e..b5c6740 100644
--- a/test/tint/shader_io/interpolate_return_struct.wgsl
+++ b/test/tint/shader_io/interpolate_return_struct.wgsl
@@ -1,13 +1,13 @@
 struct Out {
-  @builtin(position) pos : vec4<f32>;
-  @location(0) none : f32;
-  @location(1) @interpolate(flat) flat : f32;
-  @location(2) @interpolate(perspective, center) perspective_center : f32;
-  @location(3) @interpolate(perspective, centroid) perspective_centroid : f32;
-  @location(4) @interpolate(perspective, sample) perspective_sample : f32;
-  @location(5) @interpolate(linear, center) linear_center : f32;
-  @location(6) @interpolate(linear, centroid) linear_centroid : f32;
-  @location(7) @interpolate(linear, sample) linear_sample : f32;
+  @builtin(position) pos : vec4<f32>,
+  @location(0) none : f32,
+  @location(1) @interpolate(flat) flat : f32,
+  @location(2) @interpolate(perspective, center) perspective_center : f32,
+  @location(3) @interpolate(perspective, centroid) perspective_centroid : f32,
+  @location(4) @interpolate(perspective, sample) perspective_sample : f32,
+  @location(5) @interpolate(linear, center) linear_center : f32,
+  @location(6) @interpolate(linear, centroid) linear_centroid : f32,
+  @location(7) @interpolate(linear, sample) linear_sample : f32,
 };
 
 @stage(vertex)
diff --git a/test/tint/shader_io/interpolate_return_struct.wgsl.expected.wgsl b/test/tint/shader_io/interpolate_return_struct.wgsl.expected.wgsl
index 9a2164a..d224352 100644
--- a/test/tint/shader_io/interpolate_return_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/interpolate_return_struct.wgsl.expected.wgsl
@@ -1,22 +1,22 @@
 struct Out {
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
   @location(0)
-  none : f32;
+  none : f32,
   @location(1) @interpolate(flat)
-  flat : f32;
+  flat : f32,
   @location(2) @interpolate(perspective, center)
-  perspective_center : f32;
+  perspective_center : f32,
   @location(3) @interpolate(perspective, centroid)
-  perspective_centroid : f32;
+  perspective_centroid : f32,
   @location(4) @interpolate(perspective, sample)
-  perspective_sample : f32;
+  perspective_sample : f32,
   @location(5) @interpolate(linear, center)
-  linear_center : f32;
+  linear_center : f32,
   @location(6) @interpolate(linear, centroid)
-  linear_centroid : f32;
+  linear_centroid : f32,
   @location(7) @interpolate(linear, sample)
-  linear_sample : f32;
+  linear_sample : f32,
 }
 
 @stage(vertex)
diff --git a/test/tint/shader_io/invariant_struct_member.wgsl b/test/tint/shader_io/invariant_struct_member.wgsl
index 3b2a6ad..64f32ce 100644
--- a/test/tint/shader_io/invariant_struct_member.wgsl
+++ b/test/tint/shader_io/invariant_struct_member.wgsl
@@ -1,5 +1,5 @@
 struct Out {
-  @builtin(position) @invariant pos : vec4<f32>;
+  @builtin(position) @invariant pos : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/shader_io/invariant_struct_member.wgsl.expected.wgsl b/test/tint/shader_io/invariant_struct_member.wgsl.expected.wgsl
index 64d1f60..aa95431 100644
--- a/test/tint/shader_io/invariant_struct_member.wgsl.expected.wgsl
+++ b/test/tint/shader_io/invariant_struct_member.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct Out {
   @builtin(position) @invariant
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/shader_io/shared_struct_different_stages.wgsl b/test/tint/shader_io/shared_struct_different_stages.wgsl
index 2e52791..fc2e7ff 100644
--- a/test/tint/shader_io/shared_struct_different_stages.wgsl
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl
@@ -1,7 +1,7 @@
 struct Interface {
-  @location(1) col1 : f32;
-  @location(2) col2 : f32;
-  @builtin(position) pos : vec4<f32>;
+  @location(1) col1 : f32,
+  @location(2) col2 : f32,
+  @builtin(position) pos : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
index 81fbc7a..ebf8b86 100644
--- a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
 struct Interface {
   @location(1)
-  col1 : f32;
+  col1 : f32,
   @location(2)
-  col2 : f32;
+  col2 : f32,
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/shader_io/shared_struct_helper_function.wgsl b/test/tint/shader_io/shared_struct_helper_function.wgsl
index 7f7d203..c6bc37b 100644
--- a/test/tint/shader_io/shared_struct_helper_function.wgsl
+++ b/test/tint/shader_io/shared_struct_helper_function.wgsl
@@ -1,6 +1,6 @@
 struct VertexOutput {
-  @builtin(position) pos : vec4<f32>;
-  @location(0) @interpolate(flat) loc0 : i32;
+  @builtin(position) pos : vec4<f32>,
+  @location(0) @interpolate(flat) loc0 : i32,
 };
 
 fn foo(x : f32) -> VertexOutput {
diff --git a/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.wgsl b/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
index 4cad81a..57e1e1b 100644
--- a/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
+++ b/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 struct VertexOutput {
   @builtin(position)
-  pos : vec4<f32>;
+  pos : vec4<f32>,
   @location(0) @interpolate(flat)
-  loc0 : i32;
+  loc0 : i32,
 }
 
 fn foo(x : f32) -> VertexOutput {
diff --git a/test/tint/shader_io/shared_struct_storage_buffer.wgsl b/test/tint/shader_io/shared_struct_storage_buffer.wgsl
index 83b1ba5..d547365 100644
--- a/test/tint/shader_io/shared_struct_storage_buffer.wgsl
+++ b/test/tint/shader_io/shared_struct_storage_buffer.wgsl
@@ -1,7 +1,7 @@
 struct S {
-  @align(64) @location(0) f : f32;
-  @size(32) @location(1) @interpolate(flat) u : u32;
-  @align(128) @builtin(position) v : vec4<f32>;
+  @align(64) @location(0) f : f32,
+  @size(32) @location(1) @interpolate(flat) u : u32,
+  @align(128) @builtin(position) v : vec4<f32>,
 };
 
 @group(0) @binding(0)
diff --git a/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
index f4667a4..d8c3ad7 100644
--- a/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
+++ b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
 struct S {
   @align(64) @location(0)
-  f : f32;
+  f : f32,
   @size(32) @location(1) @interpolate(flat)
-  u : u32;
+  u : u32,
   @align(128) @builtin(position)
-  v : vec4<f32>;
+  v : vec4<f32>,
 }
 
 @group(0) @binding(0) var<storage, write> output : S;
diff --git a/test/tint/shader_io/vertex_input_builtins_struct.wgsl b/test/tint/shader_io/vertex_input_builtins_struct.wgsl
index 03c295a..ceeab77 100644
--- a/test/tint/shader_io/vertex_input_builtins_struct.wgsl
+++ b/test/tint/shader_io/vertex_input_builtins_struct.wgsl
@@ -1,6 +1,6 @@
 struct VertexInputs {
-  @builtin(vertex_index) vertex_index : u32;
-  @builtin(instance_index) instance_index : u32;
+  @builtin(vertex_index) vertex_index : u32,
+  @builtin(instance_index) instance_index : u32,
 };
 
 @stage(vertex)
diff --git a/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
index e48655f..579d914 100644
--- a/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 struct VertexInputs {
   @builtin(vertex_index)
-  vertex_index : u32;
+  vertex_index : u32,
   @builtin(instance_index)
-  instance_index : u32;
+  instance_index : u32,
 }
 
 @stage(vertex)
diff --git a/test/tint/shader_io/vertex_input_locations_struct.wgsl b/test/tint/shader_io/vertex_input_locations_struct.wgsl
index 96a8145..d2afb8c 100644
--- a/test/tint/shader_io/vertex_input_locations_struct.wgsl
+++ b/test/tint/shader_io/vertex_input_locations_struct.wgsl
@@ -1,8 +1,8 @@
 struct VertexInputs {
-  @location(0) loc0 : i32;
-  @location(1) loc1 : u32;
-  @location(2) loc2 : f32;
-  @location(3) loc3 : vec4<f32>;
+  @location(0) loc0 : i32,
+  @location(1) loc1 : u32,
+  @location(2) loc2 : f32,
+  @location(3) loc3 : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl b/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
index c267c60..7cf656d 100644
--- a/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
 struct VertexInputs {
   @location(0)
-  loc0 : i32;
+  loc0 : i32,
   @location(1)
-  loc1 : u32;
+  loc1 : u32,
   @location(2)
-  loc2 : f32;
+  loc2 : f32,
   @location(3)
-  loc3 : vec4<f32>;
+  loc3 : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/shader_io/vertex_input_mixed.wgsl b/test/tint/shader_io/vertex_input_mixed.wgsl
index 8e3c764..5c60fa2 100644
--- a/test/tint/shader_io/vertex_input_mixed.wgsl
+++ b/test/tint/shader_io/vertex_input_mixed.wgsl
@@ -1,10 +1,10 @@
 struct VertexInputs0 {
-  @builtin(vertex_index) vertex_index : u32;
-  @location(0) loc0 : i32;
+  @builtin(vertex_index) vertex_index : u32,
+  @location(0) loc0 : i32,
 };
 struct VertexInputs1 {
-  @location(2) loc2 : f32;
-  @location(3) loc3 : vec4<f32>;
+  @location(2) loc2 : f32,
+  @location(3) loc3 : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/shader_io/vertex_input_mixed.wgsl.expected.wgsl b/test/tint/shader_io/vertex_input_mixed.wgsl.expected.wgsl
index 5830ebe..fc2b4d6 100644
--- a/test/tint/shader_io/vertex_input_mixed.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_input_mixed.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct VertexInputs0 {
   @builtin(vertex_index)
-  vertex_index : u32;
+  vertex_index : u32,
   @location(0)
-  loc0 : i32;
+  loc0 : i32,
 }
 
 struct VertexInputs1 {
   @location(2)
-  loc2 : f32;
+  loc2 : f32,
   @location(3)
-  loc3 : vec4<f32>;
+  loc3 : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/shader_io/vertex_output_builtins_struct.wgsl b/test/tint/shader_io/vertex_output_builtins_struct.wgsl
index afdcdf5..7f5d2a7 100644
--- a/test/tint/shader_io/vertex_output_builtins_struct.wgsl
+++ b/test/tint/shader_io/vertex_output_builtins_struct.wgsl
@@ -1,5 +1,5 @@
 struct VertexOutputs {
-  @builtin(position) position : vec4<f32>;
+  @builtin(position) position : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
index f08c3a8..5fe2d8f 100644
--- a/test/tint/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct VertexOutputs {
   @builtin(position)
-  position : vec4<f32>;
+  position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/shader_io/vertex_output_locations_struct.wgsl b/test/tint/shader_io/vertex_output_locations_struct.wgsl
index aca5f94..a13fd72 100644
--- a/test/tint/shader_io/vertex_output_locations_struct.wgsl
+++ b/test/tint/shader_io/vertex_output_locations_struct.wgsl
@@ -1,9 +1,9 @@
 struct VertexOutputs {
-  @location(0) @interpolate(flat) loc0 : i32;
-  @location(1) @interpolate(flat) loc1 : u32;
-  @location(2) loc2 : f32;
-  @location(3) loc3 : vec4<f32>;
-  @builtin(position) position : vec4<f32>;
+  @location(0) @interpolate(flat) loc0 : i32,
+  @location(1) @interpolate(flat) loc1 : u32,
+  @location(2) loc2 : f32,
+  @location(3) loc3 : vec4<f32>,
+  @builtin(position) position : vec4<f32>,
 };
 
 @stage(vertex)
diff --git a/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl b/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
index a41d17a..b117ecc 100644
--- a/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
@@ -1,14 +1,14 @@
 struct VertexOutputs {
   @location(0) @interpolate(flat)
-  loc0 : i32;
+  loc0 : i32,
   @location(1) @interpolate(flat)
-  loc1 : u32;
+  loc1 : u32,
   @location(2)
-  loc2 : f32;
+  loc2 : f32,
   @location(3)
-  loc3 : vec4<f32>;
+  loc3 : vec4<f32>,
   @builtin(position)
-  position : vec4<f32>;
+  position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/shadowing/function/var.wgsl b/test/tint/shadowing/function/var.wgsl
index 7b3d8ea..1e2fbf5 100644
--- a/test/tint/shadowing/function/var.wgsl
+++ b/test/tint/shadowing/function/var.wgsl
@@ -1,4 +1,4 @@
-struct a { a : i32; };
+struct a { a : i32 };
 
 fn f() {
   {
diff --git a/test/tint/shadowing/function/var.wgsl.expected.wgsl b/test/tint/shadowing/function/var.wgsl.expected.wgsl
index eff3fc5..2f00830 100644
--- a/test/tint/shadowing/function/var.wgsl.expected.wgsl
+++ b/test/tint/shadowing/function/var.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct a {
-  a : i32;
+  a : i32,
 }
 
 fn f() {
diff --git a/test/tint/shadowing/struct/let.wgsl b/test/tint/shadowing/struct/let.wgsl
index 5379971..0eda77c 100644
--- a/test/tint/shadowing/struct/let.wgsl
+++ b/test/tint/shadowing/struct/let.wgsl
@@ -1,4 +1,4 @@
-struct a { a : i32; };
+struct a { a : i32 };
 
 fn f() {
   {
diff --git a/test/tint/shadowing/struct/let.wgsl.expected.wgsl b/test/tint/shadowing/struct/let.wgsl.expected.wgsl
index 1c889fa..6cbd501 100644
--- a/test/tint/shadowing/struct/let.wgsl.expected.wgsl
+++ b/test/tint/shadowing/struct/let.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct a {
-  a : i32;
+  a : i32,
 }
 
 fn f() {
diff --git a/test/tint/shadowing/struct/param.wgsl b/test/tint/shadowing/struct/param.wgsl
index 6c79281..7641bc9 100644
--- a/test/tint/shadowing/struct/param.wgsl
+++ b/test/tint/shadowing/struct/param.wgsl
@@ -1,4 +1,4 @@
-struct a { a : i32; };
+struct a { a : i32 };
 
 fn f(a : a) {
   let b = a;
diff --git a/test/tint/shadowing/struct/param.wgsl.expected.wgsl b/test/tint/shadowing/struct/param.wgsl.expected.wgsl
index 62184f1..5e8f98b 100644
--- a/test/tint/shadowing/struct/param.wgsl.expected.wgsl
+++ b/test/tint/shadowing/struct/param.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct a {
-  a : i32;
+  a : i32,
 }
 
 fn f(a : a) {
diff --git a/test/tint/shadowing/struct/var.wgsl b/test/tint/shadowing/struct/var.wgsl
index 7b3d8ea..1e2fbf5 100644
--- a/test/tint/shadowing/struct/var.wgsl
+++ b/test/tint/shadowing/struct/var.wgsl
@@ -1,4 +1,4 @@
-struct a { a : i32; };
+struct a { a : i32 };
 
 fn f() {
   {
diff --git a/test/tint/shadowing/struct/var.wgsl.expected.wgsl b/test/tint/shadowing/struct/var.wgsl.expected.wgsl
index eff3fc5..2f00830 100644
--- a/test/tint/shadowing/struct/var.wgsl.expected.wgsl
+++ b/test/tint/shadowing/struct/var.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct a {
-  a : i32;
+  a : i32,
 }
 
 fn f() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl
index 54e9eaa..4eb6e16f 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct OuterS {

-  a1 : array<InnerS, 8>;

+  a1 : array<InnerS, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl
index 70dc145..55968e2 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl
index 626f7da..3156a9f 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct OuterS {

-  a1 : array<InnerS, 8>;

+  a1 : array<InnerS, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl
index 6668957..9e3319d 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl
index f8a0e7c..81f0000 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct OuterS {

-  a1 : array<InnerS, 8>;

+  a1 : array<InnerS, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl
index fa0f10b..6efc259 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl
index 6ca184c..1edb64c 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl
@@ -1,18 +1,18 @@
 struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct S1 {

-  a2 : array<InnerS, 8>;

+  a2 : array<InnerS, 8>,

 };

 

 struct OuterS {

-  a1 : array<S1, 8>;

+  a1 : array<S1, 8>,

 };

 

 var<private> nextIndex : u32;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl
index 071143f..00f96ca 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl
@@ -1,18 +1,18 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct S1 {
-  a2 : array<InnerS, 8>;
+  a2 : array<InnerS, 8>,
 }
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 }
 
 var<private> nextIndex : u32;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl
index 0583104..18e43a5 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct OuterS {

-  a1 : array<InnerS, 8>;

+  a1 : array<InnerS, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl
index f41f74e..9599c41 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl
index b2f6451..2a6ef83 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl
@@ -1,14 +1,14 @@
 struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct OuterS {

-  a1 : array<array<InnerS, 8>, 8>;

+  a1 : array<array<InnerS, 8>, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl
index bf83d2c..db88183 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl
@@ -1,14 +1,14 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<array<InnerS, 8>, 8>;
+  a1 : array<array<InnerS, 8>, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl
index a03babc..7cda241 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl
@@ -1,17 +1,17 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct S1 {

-  s2 : InnerS;

+  s2 : InnerS,

 };

 

 struct OuterS {

-  a1 : array<S1, 8>;

+  a1 : array<S1, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl
index 6bd5dd7..820aee6 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct S1 {
-  s2 : InnerS;
+  s2 : InnerS,
 }
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl
index 6a377ec..785dc38 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl
@@ -1,18 +1,18 @@
 struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct S1 {

-  a2 : array<InnerS, 8>;

+  a2 : array<InnerS, 8>,

 };

 

 struct OuterS {

-  a1 : array<S1, 8>;

+  a1 : array<S1, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl
index aa1010a..da8bd0f 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl
@@ -1,18 +1,18 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct S1 {
-  a2 : array<InnerS, 8>;
+  a2 : array<InnerS, 8>,
 }
 
 struct OuterS {
-  a1 : array<S1, 8>;
+  a1 : array<S1, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl
index b4b4f71..dcab24a 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct OuterS {

-  a1 : array<InnerS>;

+  a1 : array<InnerS>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl
index d5c02bc..ad1319f 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS>;
+  a1 : array<InnerS>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl
index 711e990..c904a12 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl
@@ -1,18 +1,18 @@
 struct Uniforms {

-  i : u32;

-  j : u32;

+  i : u32,

+  j : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct S1 {

-  a2 : array<InnerS, 8>;

+  a2 : array<InnerS, 8>,

 };

 

 struct OuterS {

-  a1 : array<S1>;

+  a1 : array<S1>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl
index 56b7fd6..7c2bd05 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl
@@ -1,18 +1,18 @@
 struct Uniforms {
-  i : u32;
-  j : u32;
+  i : u32,
+  j : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct S1 {
-  a2 : array<InnerS, 8>;
+  a2 : array<InnerS, 8>,
 }
 
 struct OuterS {
-  a1 : array<S1>;
+  a1 : array<S1>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl
index ee95b91..a4cdc43 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl
@@ -1,9 +1,9 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct OuterS {

-  m1 : mat2x4<f32>;

+  m1 : mat2x4<f32>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl
index 9cb1a85..f24bd46 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct OuterS {
-  m1 : mat2x4<f32>;
+  m1 : mat2x4<f32>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl
index 9d8ac68..d32b5c2 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl
@@ -1,14 +1,14 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct OuterS {

-  a1 : array<InnerS, 8>;

-  a2 : array<InnerS, 8>;

+  a1 : array<InnerS, 8>,

+  a2 : array<InnerS, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl
index d39372f..63096f1 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl
@@ -1,14 +1,14 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
-  a2 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
+  a2 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl
index 12591b3..18d77ad 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl
@@ -1,17 +1,17 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct S1 {

-  a : array<InnerS, 8>;

+  a : array<InnerS, 8>,

 };

 

 struct OuterS {

-  s2 : S1;

+  s2 : S1,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl
index 2d65b1f..1d27da4 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct S1 {
-  a : array<InnerS, 8>;
+  a : array<InnerS, 8>,
 }
 
 struct OuterS {
-  s2 : S1;
+  s2 : S1,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl
index b5baa12..f1bf8c6 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl
@@ -1,9 +1,9 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct OuterS {

-  v1 : vec3<f32>;

+  v1 : vec3<f32>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl
index e47e024..13a4ebc 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct OuterS {
-  v1 : vec3<f32>;
+  v1 : vec3<f32>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl
index 49fbde7..9fb13ae 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl
@@ -1,9 +1,9 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct OuterS {

-  a1 : array<u32, 8>;

+  a1 : array<u32, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl
index bfa66c2..47d2e7b 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct OuterS {
-  a1 : array<u32, 8>;
+  a1 : array<u32, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl
index 133c000..bffac61 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 

 struct OuterS {

-  a1 : array<InnerS, 8>;

+  a1 : array<InnerS, 8>,

 };

 

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl
index 5ae5fca..acd635d 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl
index b7cedd0..0ecd7e4 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl
@@ -1,11 +1,11 @@
 struct Uniforms {

-  i : u32;

+  i : u32,

 };

 struct InnerS {

-  v : i32;

+  v : i32,

 };

 struct OuterS {

-  a1 : array<InnerS, 8>;

+  a1 : array<InnerS, 8>,

 };

 @group(1) @binding(4) var<uniform> uniforms : Uniforms;

 

diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl
index 75cedf7..cebf112 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl
@@ -1,13 +1,13 @@
 struct Uniforms {
-  i : u32;
+  i : u32,
 }
 
 struct InnerS {
-  v : i32;
+  v : i32,
 }
 
 struct OuterS {
-  a1 : array<InnerS, 8>;
+  a1 : array<InnerS, 8>,
 }
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
diff --git a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl
index f616560..0b07b79 100644
--- a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl
+++ b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    arr : array<i32>;
+    arr : array<i32>,
 };
 
 @binding(0) @group(0) var<storage, read_write> s : S;
diff --git a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl
index 9a8aa90..4bb4719 100644
--- a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  arr : array<i32>;
+  arr : array<i32>,
 }
 
 @binding(0) @group(0) var<storage, read_write> s : S;
diff --git a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl
index bbf5448..4d7a319 100644
--- a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl
+++ b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    arr : array<i32>;
+    arr : array<i32>,
 };
 
 @binding(0) @group(0) var<storage, read_write> s : S;
diff --git a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl
index 13a6462..d16ffd2 100644
--- a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  arr : array<i32>;
+  arr : array<i32>,
 }
 
 @binding(0) @group(0) var<storage, read_write> s : S;
diff --git a/test/tint/statements/assign/phony/storage_buffer.wgsl b/test/tint/statements/assign/phony/storage_buffer.wgsl
index c8eb0ec..caf8296 100644
--- a/test/tint/statements/assign/phony/storage_buffer.wgsl
+++ b/test/tint/statements/assign/phony/storage_buffer.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    i : i32;
+    i : i32,
 };
 
 @binding(0) @group(0) var<storage, read_write> s : S;
diff --git a/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.wgsl b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.wgsl
index 5f2debd..90c096d 100644
--- a/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 @binding(0) @group(0) var<storage, read_write> s : S;
diff --git a/test/tint/statements/assign/phony/uniform_buffer.wgsl b/test/tint/statements/assign/phony/uniform_buffer.wgsl
index f7286c9..5ad1e64 100644
--- a/test/tint/statements/assign/phony/uniform_buffer.wgsl
+++ b/test/tint/statements/assign/phony/uniform_buffer.wgsl
@@ -1,5 +1,5 @@
 struct S {
-    i : i32;
+    i : i32,
 };
 
 @binding(0) @group(0) var<uniform> u : S;
diff --git a/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl
index d20153a..22a3bc1 100644
--- a/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 @binding(0) @group(0) var<uniform> u : S;
diff --git a/test/tint/statements/for/condition/struct_ctor.wgsl b/test/tint/statements/for/condition/struct_ctor.wgsl
index 1d2396b..042fd32 100644
--- a/test/tint/statements/for/condition/struct_ctor.wgsl
+++ b/test/tint/statements/for/condition/struct_ctor.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 };
 
 fn f() {
diff --git a/test/tint/statements/for/condition/struct_ctor.wgsl.expected.wgsl b/test/tint/statements/for/condition/struct_ctor.wgsl.expected.wgsl
index 45b0bea..fa10bb6 100644
--- a/test/tint/statements/for/condition/struct_ctor.wgsl.expected.wgsl
+++ b/test/tint/statements/for/condition/struct_ctor.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 fn f() {
diff --git a/test/tint/statements/for/continuing/struct_ctor.wgsl b/test/tint/statements/for/continuing/struct_ctor.wgsl
index 362becd..8ae24fc 100644
--- a/test/tint/statements/for/continuing/struct_ctor.wgsl
+++ b/test/tint/statements/for/continuing/struct_ctor.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 };
 
 fn f() {
diff --git a/test/tint/statements/for/continuing/struct_ctor.wgsl.expected.wgsl b/test/tint/statements/for/continuing/struct_ctor.wgsl.expected.wgsl
index 392153b..ac71108 100644
--- a/test/tint/statements/for/continuing/struct_ctor.wgsl.expected.wgsl
+++ b/test/tint/statements/for/continuing/struct_ctor.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 fn f() {
diff --git a/test/tint/statements/for/initializer/struct_ctor.wgsl b/test/tint/statements/for/initializer/struct_ctor.wgsl
index 40e0913..95d2b3e 100644
--- a/test/tint/statements/for/initializer/struct_ctor.wgsl
+++ b/test/tint/statements/for/initializer/struct_ctor.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 };
 
 fn f() {
diff --git a/test/tint/statements/for/initializer/struct_ctor.wgsl.expected.wgsl b/test/tint/statements/for/initializer/struct_ctor.wgsl.expected.wgsl
index eb6a570..bde746b 100644
--- a/test/tint/statements/for/initializer/struct_ctor.wgsl.expected.wgsl
+++ b/test/tint/statements/for/initializer/struct_ctor.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  i : i32;
+  i : i32,
 }
 
 fn f() {
diff --git a/test/tint/struct/type_constructor.wgsl b/test/tint/struct/type_constructor.wgsl
index f79b527..b556902 100644
--- a/test/tint/struct/type_constructor.wgsl
+++ b/test/tint/struct/type_constructor.wgsl
@@ -1,23 +1,23 @@
 struct S1 {
-  a : i32;
-  b : i32;
-  c : i32;
-  d : i32;
+  a : i32,
+  b : i32,
+  c : i32,
+  d : i32,
 };
 
 struct S2 {
-  e : i32;
-  f : S1;
+  e : i32,
+  f : S1,
 };
 
 struct S3 {
-  g : i32;
-  h : S1;
-  i : S2;
+  g : i32,
+  h : S1,
+  i : S2,
 };
 
 struct T {
-  a : array<i32, 2>;
+  a : array<i32, 2>,
 };
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/struct/type_constructor.wgsl.expected.wgsl b/test/tint/struct/type_constructor.wgsl.expected.wgsl
index d4a5bbd..6d26b5d 100644
--- a/test/tint/struct/type_constructor.wgsl.expected.wgsl
+++ b/test/tint/struct/type_constructor.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
 struct S1 {
-  a : i32;
-  b : i32;
-  c : i32;
-  d : i32;
+  a : i32,
+  b : i32,
+  c : i32,
+  d : i32,
 }
 
 struct S2 {
-  e : i32;
-  f : S1;
+  e : i32,
+  f : S1,
 }
 
 struct S3 {
-  g : i32;
-  h : S1;
-  i : S2;
+  g : i32,
+  h : S1,
+  i : S2,
 }
 
 struct T {
-  a : array<i32, 2>;
+  a : array<i32, 2>,
 }
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/types/function_scope_declarations.wgsl b/test/tint/types/function_scope_declarations.wgsl
index fe560bb..9debfec 100644
--- a/test/tint/types/function_scope_declarations.wgsl
+++ b/test/tint/types/function_scope_declarations.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 };
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/types/function_scope_declarations.wgsl.expected.wgsl b/test/tint/types/function_scope_declarations.wgsl.expected.wgsl
index e5168c2..d09c44c 100644
--- a/test/tint/types/function_scope_declarations.wgsl.expected.wgsl
+++ b/test/tint/types/function_scope_declarations.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 }
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/types/module_scope_let.wgsl b/test/tint/types/module_scope_let.wgsl
index 54718f4..4f5f7fe 100644
--- a/test/tint/types/module_scope_let.wgsl
+++ b/test/tint/types/module_scope_let.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 };
 
 let bool_let : bool = bool();
diff --git a/test/tint/types/module_scope_let.wgsl.expected.wgsl b/test/tint/types/module_scope_let.wgsl.expected.wgsl
index 8d091d3..2585c0c 100644
--- a/test/tint/types/module_scope_let.wgsl.expected.wgsl
+++ b/test/tint/types/module_scope_let.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 }
 
 let bool_let : bool = bool();
diff --git a/test/tint/types/module_scope_var.wgsl b/test/tint/types/module_scope_var.wgsl
index a748f59..c5ea8b6 100644
--- a/test/tint/types/module_scope_var.wgsl
+++ b/test/tint/types/module_scope_var.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 };
 
 var<private> bool_var : bool;
diff --git a/test/tint/types/module_scope_var.wgsl.expected.wgsl b/test/tint/types/module_scope_var.wgsl.expected.wgsl
index 31ee7a7..31a20b0 100644
--- a/test/tint/types/module_scope_var.wgsl.expected.wgsl
+++ b/test/tint/types/module_scope_var.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 }
 
 var<private> bool_var : bool;
diff --git a/test/tint/types/module_scope_var_initializers.wgsl b/test/tint/types/module_scope_var_initializers.wgsl
index fb2eb8c..f2ffaee 100644
--- a/test/tint/types/module_scope_var_initializers.wgsl
+++ b/test/tint/types/module_scope_var_initializers.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 };
 
 var<private> bool_var : bool = bool();
diff --git a/test/tint/types/module_scope_var_initializers.wgsl.expected.wgsl b/test/tint/types/module_scope_var_initializers.wgsl.expected.wgsl
index e2b011b..e8e80d9 100644
--- a/test/tint/types/module_scope_var_initializers.wgsl.expected.wgsl
+++ b/test/tint/types/module_scope_var_initializers.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 }
 
 var<private> bool_var : bool = bool();
diff --git a/test/tint/types/parameters.wgsl b/test/tint/types/parameters.wgsl
index 1ea45ae..465a673 100644
--- a/test/tint/types/parameters.wgsl
+++ b/test/tint/types/parameters.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 };
 
 fn foo(
diff --git a/test/tint/types/parameters.wgsl.expected.wgsl b/test/tint/types/parameters.wgsl.expected.wgsl
index 2bda0fb..e98185f 100644
--- a/test/tint/types/parameters.wgsl.expected.wgsl
+++ b/test/tint/types/parameters.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 }
 
 fn foo(param_bool : bool, param_i32 : i32, param_u32 : u32, param_f32 : f32, param_v2i32 : vec2<i32>, param_v3u32 : vec3<u32>, param_v4f32 : vec4<f32>, param_m2x3 : mat2x3<f32>, param_arr : array<f32, 4>, param_struct : S, param_ptr_f32 : ptr<function, f32>, param_ptr_vec : ptr<function, vec4<f32>>, param_ptr_arr : ptr<function, array<f32, 4>>) {
diff --git a/test/tint/types/return_types.wgsl b/test/tint/types/return_types.wgsl
index 1ed77ff..563b219 100644
--- a/test/tint/types/return_types.wgsl
+++ b/test/tint/types/return_types.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 };
 
 fn ret_bool() -> bool { return bool(); }
diff --git a/test/tint/types/return_types.wgsl.expected.wgsl b/test/tint/types/return_types.wgsl.expected.wgsl
index c888b19..3ef490e 100644
--- a/test/tint/types/return_types.wgsl.expected.wgsl
+++ b/test/tint/types/return_types.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct S {
-  a : f32;
+  a : f32,
 }
 
 fn ret_bool() -> bool {
diff --git a/test/tint/types/struct_members.wgsl b/test/tint/types/struct_members.wgsl
index e179bdb..21bc217 100644
--- a/test/tint/types/struct_members.wgsl
+++ b/test/tint/types/struct_members.wgsl
@@ -1,18 +1,18 @@
 struct S_inner {
-  a : f32;
+  a : f32,
 };
 
 struct S {
-  member_bool : bool;
-  member_i32 : i32;
-  member_u32 : u32;
-  member_f32 : f32;
-  member_v2i32 : vec2<i32>;
-  member_v3u32 : vec3<u32>;
-  member_v4f32 : vec4<f32>;
-  member_m2x3 : mat2x3<f32>;
-  member_arr : array<f32, 4>;
-  member_struct : S_inner;
+  member_bool : bool,
+  member_i32 : i32,
+  member_u32 : u32,
+  member_f32 : f32,
+  member_v2i32 : vec2<i32>,
+  member_v3u32 : vec3<u32>,
+  member_v4f32 : vec4<f32>,
+  member_m2x3 : mat2x3<f32>,
+  member_arr : array<f32, 4>,
+  member_struct : S_inner,
 };
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/types/struct_members.wgsl.expected.wgsl b/test/tint/types/struct_members.wgsl.expected.wgsl
index 6778410..061b6f7 100644
--- a/test/tint/types/struct_members.wgsl.expected.wgsl
+++ b/test/tint/types/struct_members.wgsl.expected.wgsl
@@ -1,18 +1,18 @@
 struct S_inner {
-  a : f32;
+  a : f32,
 }
 
 struct S {
-  member_bool : bool;
-  member_i32 : i32;
-  member_u32 : u32;
-  member_f32 : f32;
-  member_v2i32 : vec2<i32>;
-  member_v3u32 : vec3<u32>;
-  member_v4f32 : vec4<f32>;
-  member_m2x3 : mat2x3<f32>;
-  member_arr : array<f32, 4>;
-  member_struct : S_inner;
+  member_bool : bool,
+  member_i32 : i32,
+  member_u32 : u32,
+  member_f32 : f32,
+  member_v2i32 : vec2<i32>,
+  member_v3u32 : vec3<u32>,
+  member_v4f32 : vec4<f32>,
+  member_m2x3 : mat2x3<f32>,
+  member_arr : array<f32, 4>,
+  member_struct : S_inner,
 }
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.glsl
index 92f1a87..b83d53b 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.glsl
@@ -2,9 +2,9 @@
 
 
 struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
+  field0 : u32,
+  field1 : f32,
+  field2 : array<u32, 2u>,
 }
 
 fn main_1() {
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.hlsl
index f7f27eb..5f0b4f5 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.hlsl
@@ -2,9 +2,9 @@
 
 
 struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
+  field0 : u32,
+  field1 : f32,
+  field2 : array<u32, 2u>,
 };
 
 fn main_1() {
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.msl
index f7f27eb..5f0b4f5 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.msl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.msl
@@ -2,9 +2,9 @@
 
 
 struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
+  field0 : u32,
+  field1 : f32,
+  field2 : array<u32, 2u>,
 };
 
 fn main_1() {
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.wgsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.wgsl
index f7f27eb..5f0b4f5 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.wgsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.wgsl
@@ -2,9 +2,9 @@
 
 
 struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
+  field0 : u32,
+  field1 : f32,
+  field2 : array<u32, 2u>,
 };
 
 fn main_1() {
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.glsl
index 1ce2708..81c003b 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.glsl
@@ -2,9 +2,9 @@
 
 
 struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
+  field0 : u32,
+  field1 : f32,
+  field2 : array<u32, 2u>,
 }
 
 var<private> x_1 : u32;
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.hlsl
index 099f55e..8413ef8 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.hlsl
@@ -2,9 +2,9 @@
 
 
 struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
+  field0 : u32,
+  field1 : f32,
+  field2 : array<u32, 2u>,
 };
 
 var<private> x_1 : u32;
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.msl
index 099f55e..8413ef8 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.msl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.msl
@@ -2,9 +2,9 @@
 
 
 struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
+  field0 : u32,
+  field1 : f32,
+  field2 : array<u32, 2u>,
 };
 
 var<private> x_1 : u32;
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.wgsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.wgsl
index 099f55e..8413ef8 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.wgsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.wgsl
@@ -2,9 +2,9 @@
 
 
 struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
+  field0 : u32,
+  field1 : f32,
+  field2 : array<u32, 2u>,
 };
 
 var<private> x_1 : u32;
diff --git a/test/tint/var/inferred/function.wgsl b/test/tint/var/inferred/function.wgsl
index c1bea4c..dcf1d75 100644
--- a/test/tint/var/inferred/function.wgsl
+++ b/test/tint/var/inferred/function.wgsl
@@ -1,5 +1,5 @@
 struct MyStruct {

-    f1 : f32;

+    f1 : f32,

 };

 

 type MyArray = array<f32, 10>;

diff --git a/test/tint/var/inferred/function.wgsl.expected.wgsl b/test/tint/var/inferred/function.wgsl.expected.wgsl
index bd60a83..ce54347 100644
--- a/test/tint/var/inferred/function.wgsl.expected.wgsl
+++ b/test/tint/var/inferred/function.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 struct MyStruct {
-  f1 : f32;
+  f1 : f32,
 }
 
 type MyArray = array<f32, 10>;
diff --git a/test/tint/var/initialization/function/struct.wgsl b/test/tint/var/initialization/function/struct.wgsl
index 55babed..f5ff55d 100644
--- a/test/tint/var/initialization/function/struct.wgsl
+++ b/test/tint/var/initialization/function/struct.wgsl
@@ -1,6 +1,6 @@
 struct S {
-    a : i32;
-    b : f32;
+    a : i32,
+    b : f32,
 };
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/var/initialization/function/struct.wgsl.expected.wgsl b/test/tint/var/initialization/function/struct.wgsl.expected.wgsl
index 2dd4381..8bada3b 100644
--- a/test/tint/var/initialization/function/struct.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/function/struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct S {
-  a : i32;
-  b : f32;
+  a : i32,
+  b : f32,
 }
 
 @stage(compute) @workgroup_size(1)
diff --git a/test/tint/var/initialization/private/struct.wgsl b/test/tint/var/initialization/private/struct.wgsl
index db44563..4d87595 100644
--- a/test/tint/var/initialization/private/struct.wgsl
+++ b/test/tint/var/initialization/private/struct.wgsl
@@ -1,6 +1,6 @@
 struct S {
-    a : i32;
-    b : f32;
+    a : i32,
+    b : f32,
 };
 
 var<private> v : S;
diff --git a/test/tint/var/initialization/private/struct.wgsl.expected.wgsl b/test/tint/var/initialization/private/struct.wgsl.expected.wgsl
index 6d46d0d..bb45cd6 100644
--- a/test/tint/var/initialization/private/struct.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/private/struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct S {
-  a : i32;
-  b : f32;
+  a : i32,
+  b : f32,
 }
 
 var<private> v : S;
diff --git a/test/tint/var/initialization/workgroup/struct.wgsl b/test/tint/var/initialization/workgroup/struct.wgsl
index 5fa28ed..5aa0a6d 100644
--- a/test/tint/var/initialization/workgroup/struct.wgsl
+++ b/test/tint/var/initialization/workgroup/struct.wgsl
@@ -1,6 +1,6 @@
 struct S {
-    a : i32;
-    b : f32;
+    a : i32,
+    b : f32,
 };
 
 var<workgroup> v : S;
diff --git a/test/tint/var/initialization/workgroup/struct.wgsl.expected.wgsl b/test/tint/var/initialization/workgroup/struct.wgsl.expected.wgsl
index c42ae1c..a8b7f86 100644
--- a/test/tint/var/initialization/workgroup/struct.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/workgroup/struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct S {
-  a : i32;
-  b : f32;
+  a : i32,
+  b : f32,
 }
 
 var<workgroup> v : S;
diff --git a/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl b/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
index 83fbc36..6997f0c 100644
--- a/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
+++ b/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
@@ -1,19 +1,19 @@
 struct result {
-  res0 : i32;
-  res1 : i32;
-  res2 : i32;
+  res0 : i32,
+  res1 : i32,
+  res2 : i32,
 }
 
 struct block0 {
-  data0 : i32;
+  data0 : i32,
 }
 
 struct block1 {
-  data1 : i32;
+  data1 : i32,
 }
 
 struct block2 {
-  data2 : i32;
+  data2 : i32,
 }
 
 @group(0) @binding(3) var<storage, read_write> x_4 : result;
diff --git a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
index fbad36a..ff8d1ee 100644
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
@@ -1,5 +1,5 @@
 struct block0 {
-  data : vec4<f32>;
+  data : vec4<f32>,
 }
 
 @group(0) @binding(1) var<storage, read_write> x_4 : block0;
diff --git a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
index 11eb154..382abb7 100644
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
@@ -1,5 +1,5 @@
 struct block0 {
-  in_color : vec4<f32>;
+  in_color : vec4<f32>,
 }
 
 var<private> position : vec4<f32>;
@@ -20,9 +20,9 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
   @location(0)
-  frag_color_1 : vec4<f32>;
+  frag_color_1 : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
index 0d3ee70..a23ed1f 100644
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
@@ -10,7 +10,7 @@
 
 struct main_out {
   @location(0)
-  final_color_1 : vec4<f32>;
+  final_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
index 53fb0d4..02b20e2 100644
--- a/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
@@ -14,9 +14,9 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
   @location(1)
-  frag_color_1 : vec4<f32>;
+  frag_color_1 : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl b/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl
index cb37d55..372cd82 100644
--- a/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl
+++ b/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl
@@ -17,7 +17,7 @@
 
 struct main_out {
   @location(0)
-  color_out_1 : vec4<f32>;
+  color_out_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
index fbea7f0..9ca3830 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
@@ -12,7 +12,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
index 10f869d..4e1dcd4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct tmp_struct {
-  nmb : array<i32, 1u>;
+  nmb : array<i32, 1u>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_11 : buf0;
@@ -102,7 +102,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
index 8f7c0eb..b82911e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -186,7 +186,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
index bff1428..ca479f1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -92,7 +92,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
index 6ccad5e..30a8516 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
@@ -102,7 +102,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
index 1f7eb5c..483497e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
@@ -84,7 +84,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
index d23a274..db02a9b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
@@ -1,12 +1,12 @@
 type RTArr = array<i32>;
 
 struct doesNotMatter {
-  global_seed : i32;
-  data : RTArr;
+  global_seed : i32,
+  data : RTArr,
 }
 
 struct buf1 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_LocalInvocationID : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
index 33378a7..58086b5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -34,7 +34,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
index f4424ec..6909d48 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -29,7 +29,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
index 7fbd580..7a949f2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -62,7 +62,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
index 8af8b73..2e3649f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 };
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -21,7 +21,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 };
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
index f1ea845..c4cb117 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
@@ -1,6 +1,6 @@
 struct S {
-  f0 : i32;
-  f1 : mat4x3<f32>;
+  f0 : i32,
+  f1 : mat4x3<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -62,7 +62,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
index 0604626..7740b40 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> GLF_live6tree : array<i32, 10u>;
@@ -40,7 +40,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
index c31f9a8..55480e9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_25 : buf0;
@@ -305,7 +305,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
index 2232e74..989414f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : f32;
+  zero : f32,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -113,7 +113,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
index a209196..14f52ec 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -65,7 +65,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
index c8f743e..01d4813 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -64,7 +64,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
index b884c2a..c9e1346 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -56,7 +56,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
index cf240c4..3acd4f4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  two : i32;
+  two : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -24,7 +24,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
index 3319590..bcb113c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 10u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_7 : buf1;
@@ -69,7 +69,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
index 243cc81..3fcf705 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -59,7 +59,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
index 1baaa5c..2365447 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -64,7 +64,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
index 704f331..6fbdc83 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -57,7 +57,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
index 8828c4c..405795b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
@@ -23,7 +23,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
index 1f82bca..7ee2ddc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 12u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -90,7 +90,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
index 8aa5b0f..0c68847 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -50,7 +50,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
index babe022..6a1eb17 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -69,7 +69,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
index 1852fa8..e5f7fe4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
@@ -1,16 +1,16 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 20u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct buf1 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -225,7 +225,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
index 5bf5aab..20df20b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 7u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -90,7 +90,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
index 3dbc213..fd2a248 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -64,7 +64,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
index d4c7d67..2897828 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_9 : buf0;
@@ -48,7 +48,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
index cb63289..f337640 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -72,7 +72,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
index a01167c..656a824 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -63,7 +63,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
index bf36d9f..fe80563 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct buf2 {
-  zero : f32;
+  zero : f32,
 }
 
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(2) var<uniform> x_6 : buf2;
@@ -64,7 +64,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
index ed0737e..dd18cd5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
@@ -150,7 +150,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
index 1e008ae..01c22cf 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -148,7 +148,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
index 5d5d09b..1bd35c9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -33,7 +33,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
index 5bf9fe7..6fe0c20 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -76,7 +76,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
index 4af7fb3..2d3a69b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_7 : buf1;
@@ -52,7 +52,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
index bbd72a6..3803b96 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -82,7 +82,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
index 4398b79..840baf1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -53,7 +53,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
index adc1e21..f8aae14 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -53,7 +53,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
index 0070717..d77e5ef 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
@@ -1,16 +1,16 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct buf1 {
-  zero : f32;
+  zero : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -49,7 +49,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
index c2144bc..2828ef3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
@@ -1,38 +1,38 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf2 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 struct buf3 {
-  three : i32;
+  three : i32,
 }
 
 struct strided_arr_2 {
   @size(16)
-  el : u32;
+  el : u32,
 }
 
 type Arr_2 = array<strided_arr_2, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_uint_values : Arr_2;
+  x_GLF_uniform_uint_values : Arr_2,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -144,7 +144,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
index a9f1923..723750d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -38,7 +38,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
index 8fcd422..aed5a7c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
@@ -1,16 +1,16 @@
 struct buf1 {
-  v1 : vec2<f32>;
+  v1 : vec2<f32>,
 }
 
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -48,7 +48,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
index 133a280..2e7e905 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -56,7 +56,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
index 62d6212..5a12a3a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct buf2 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -71,7 +71,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
index 03dbed0..f9bf034 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  quarter : f32;
+  quarter : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -21,7 +21,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
index a240441..12fa7fd 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
@@ -29,7 +29,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
index 1cc1e10..e129446 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : f32;
+  zero : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -19,7 +19,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
index 487b9a3..33f0a30 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -24,7 +24,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
index 3e15df6..ff07167 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  fourtytwo : f32;
+  fourtytwo : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
index 78f9d1c..a37027f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
@@ -14,7 +14,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
index c37c00a..4d552c1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -21,7 +21,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
index 7af8bee..dbd8670 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -69,7 +69,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
index 5384d29..bde5e50 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -29,7 +29,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
index a0d4b93..e744089 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -59,7 +59,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
index 5458f6a..0c19e6f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -41,7 +41,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
index c05d9e1..4563cb8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
@@ -43,7 +43,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
index 55c0cc3..37d5e8d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
@@ -15,7 +15,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
index 197c3d9..0c8d7f0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -79,7 +79,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
index 005226e..df26d79 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : vec2<f32>;
+  one : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -22,7 +22,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
index c7a59cf..e9d8121 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
@@ -1,16 +1,16 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct buf1 {
-  zero : i32;
+  zero : i32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -58,7 +58,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
index 5ea1948..1cab56c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct Array {
-  values : array<i32, 2u>;
+  values : array<i32, 2u>,
 }
 
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -59,7 +59,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
index 0a2ac07..1a5eda7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct Array {
-  values : array<i32, 2u>;
+  values : array<i32, 2u>,
 }
 
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -31,7 +31,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
index 5408c86..4f9c8f6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct Array {
-  values : array<i32, 2u>;
+  values : array<i32, 2u>,
 }
 
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -66,7 +66,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
index f82e4d5..4ead109 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -40,7 +40,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
index 6b704ef..401a99e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -97,7 +97,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
index 8b23ad6..7c8c99e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
@@ -66,7 +66,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
index dbc8060..8903c42 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -76,7 +76,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
index 809635e..2acb304 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -58,7 +58,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
index 6cb1f16..9f7e350 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -89,7 +89,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
index 1657349..1146646 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -42,7 +42,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
index d66980d..937966c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -50,7 +50,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
index d404bcb..9cfcb85 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct buf1 {
-  ten : i32;
+  ten : i32,
 }
 
 struct buf0 {
-  minusEight : i32;
+  minusEight : i32,
 }
 
 @group(0) @binding(1) var<uniform> x_8 : buf1;
@@ -52,7 +52,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
index 74bfb7c..730a78b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -67,7 +67,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
index cea4d95..a43ae19 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
@@ -109,7 +109,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
index 18e1861..8437972 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -73,7 +73,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
index 4fcad94..918fa8a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 struct buf2 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_global_loop_count : i32;
@@ -90,7 +90,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
index 8c02daf..f1e118e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -66,7 +66,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
index 256de0d..df50e29 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
@@ -14,7 +14,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
index 2a08924..8692c5a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -59,7 +59,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
index 64c7a9a..6473fba 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -66,7 +66,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
index 72cfdf5..1fb1cb2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
@@ -14,7 +14,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
index 9ce9ffa..803d61a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_7 : buf1;
@@ -61,7 +61,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
index 2451831..fb1065d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -43,7 +43,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
index 64aea96..5dcceaa 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -18,7 +18,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
index 7eaac16..d0c12de 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -18,7 +18,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
index 7d0ba26..2107dd3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
@@ -17,7 +17,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
index cc87408..a2a02a0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
@@ -14,7 +14,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
index 33da83d..4089c1f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
@@ -28,7 +28,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
index 2860b20..f4422c8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
@@ -14,7 +14,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
index 65c033b..9c233ec 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  minusOne : i32;
+  minusOne : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -25,7 +25,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
index a9436ca..7d02d77 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
@@ -14,7 +14,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
index 5d3045c..b543414 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : u32;
+  one : u32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -65,7 +65,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
index c5d4523..007ff8f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
@@ -14,7 +14,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
index 7a82588..58700bc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
@@ -17,7 +17,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
index 70a6f3d..7e3367d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -34,7 +34,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
index dd92d52..5b1b46f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -18,7 +18,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
index 0016ae2..9d3abf8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  twoandthree : vec2<f32>;
+  twoandthree : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
index ee03e4d..784949c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  three : f32;
+  three : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -18,7 +18,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
index 228b6e0..b751c1b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  three : f32;
+  three : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -18,7 +18,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
index 1602fef..e2a3c0d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
@@ -25,7 +25,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
index 6c5484b..07b9211 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -22,7 +22,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
index 21ee6fd..b172dad 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  four : f32;
+  four : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -22,7 +22,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
index 7ecf57d..1ff19b5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -22,7 +22,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
index 7eb6ecb..61d8451 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
index 85cb213..aeb7d65 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
index fdb56fe..cef61b2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  five : i32;
+  five : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -32,7 +32,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
index f575702..6af612b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -25,7 +25,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
index 654179f..812b29d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  four : i32;
+  four : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -18,7 +18,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
index cb487b7..728b7bc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -21,7 +21,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
index 79e4777..3ade036 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -18,7 +18,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
index b3ebb33..d242c7f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -18,7 +18,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
index 822da1a..5139fdc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  threeandfour : vec2<f32>;
+  threeandfour : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -24,7 +24,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
index 23d2269..12b5e94 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
@@ -17,7 +17,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
index 18f86dc..589559b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zeroOne : vec2<f32>;
+  zeroOne : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -26,7 +26,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
index 357342b..5cb935f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -47,7 +47,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
index 55262f8..96df572 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -70,7 +70,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
index 196dbc4..ab5a157 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -60,7 +60,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
index f609ad6..a511274 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -51,7 +51,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
index 7ce1721..26b7d49 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -54,7 +54,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
index 703a357..b67f6a2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -42,7 +42,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
index e428292..0691fca 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -96,7 +96,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
index b198c6d..7ca0036 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -73,7 +73,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
index bba2051..183832e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -93,7 +93,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
index 3404ec9..4ffbb2c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct buf2 {
-  zero : f32;
+  zero : f32,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_8 : buf1;
@@ -71,7 +71,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
index b8f89ee..ca7f418 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_global_loop_count : i32;
@@ -61,7 +61,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
index 6198ff5..12c07c6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 18u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 struct buf2 {
-  one : i32;
+  one : i32,
 }
 
 var<private> x_GLF_global_loop_count : i32;
@@ -141,7 +141,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
index c2e7adc..0361d8a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_global_loop_count : i32;
@@ -69,7 +69,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
index 7a73d57..36bfedc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -74,7 +74,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
index 663a326..854150b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_global_loop_count : i32;
@@ -48,7 +48,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
index 42204bd..7833a32 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -29,7 +29,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
index 2e5f93c..cf9e22e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -56,7 +56,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
index ad74044..66732b5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -73,7 +73,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
index 753efee..c682dfc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -52,7 +52,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
index cb60835..9c7018a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  three : i32;
+  three : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -44,7 +44,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
index 1b066f4..ba5f72c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -88,7 +88,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
index 5271ea3..8d275b8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -82,7 +82,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
index 1d0d1c9..89f6084 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_global_loop_count : i32;
@@ -87,7 +87,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
index 3e902a3..592a626 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -40,7 +40,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
index 5cf897e..8cd0f31 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -58,7 +58,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
index d9fcd9c..f5fbe5c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -93,7 +93,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
index b13337b..0652450 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -69,7 +69,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
index f900812..6cb7a93 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -67,7 +67,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
index 093b230..488a6f4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
@@ -28,7 +28,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
index d4a850c..b36fbd0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -69,7 +69,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
index 6164a64..c39b3d8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
@@ -39,7 +39,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
index 40e04fc..e6e3393 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
index b83d868..70a1ede 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_7 : buf1;
@@ -84,7 +84,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
index fc4ab88..5a38ad6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -69,7 +69,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
index f769997..5c979eb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -79,7 +79,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
index a000c26..4b7661d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_8 : buf1;
@@ -89,7 +89,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
index 97d1770..3b6c63b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -100,7 +100,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
index b5f5aaf..ea99ca9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -75,7 +75,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
index d8a6037..79615f6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -55,7 +55,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
index 876458b..8918a9d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -47,7 +47,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
index 786d102..e0cafa1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -77,7 +77,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
index e5ccf7d..39cdba3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -57,7 +57,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
index fde18f3..90bbc4a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -54,7 +54,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
index fb6b243..38846e7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -75,7 +75,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
index 5b6773e..98eb6e6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 7u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -96,7 +96,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
index 62ae33f..ee6a3df 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -70,7 +70,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
index d31ccbf..af52c85 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -93,7 +93,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
index b0dc374..64f35ba 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_8 : buf1;
@@ -95,7 +95,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
index 2ecd93e..ebf907b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -97,7 +97,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
index cd44a23..a551426 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -50,7 +50,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
index 1b3086a..f473270 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -88,7 +88,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
index 4c25a44..c587550 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
index 6d56234..ea785d7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
index eafe945..2815fa8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -49,7 +49,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
index 947a061..943871b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 12u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -171,7 +171,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
index 70346d4..6eb2fb0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -46,7 +46,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
index b6a75da..27651aa 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -46,7 +46,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
index 6d86dda..feea7d7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -44,7 +44,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
index 168adad..8fc099c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
@@ -1,20 +1,20 @@
 struct S {
-  data : i32;
+  data : i32,
 }
 
 struct buf1 {
-  v1 : vec2<f32>;
+  v1 : vec2<f32>,
 }
 
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(1) var<uniform> x_8 : buf1;
@@ -153,7 +153,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
index d32db63..9fa82b9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -61,7 +61,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
index 41aa8f5..e9236ec 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -36,7 +36,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
index 7509db6..26752c8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -53,7 +53,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
index 33f62fe..b5148b4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -57,7 +57,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
index 940a368..ca56e25 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
@@ -91,7 +91,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
index d4f76f6..b707433 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -49,7 +49,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
index bb532e7..f1e5842 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -43,7 +43,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
index 326cc36..5765012 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -45,7 +45,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
index aca0669..c4dd2b4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
@@ -77,7 +77,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
index efce663..c6568be 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -79,7 +79,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
index 5903503..15bb11e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -43,7 +43,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
index 750784f..0ea341f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> x_GLF_global_loop_count : i32;
@@ -76,7 +76,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
index d454240..456679a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 6u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -85,7 +85,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
index 9f5e3d1..5094e8f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -82,7 +82,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
index 1c0797c..0ff978e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_7 : buf1;
@@ -92,7 +92,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
index 12fc270..88fae6d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -59,7 +59,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
index f469731..632ec35 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -44,7 +44,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
index 0afc162..cf18336 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -39,7 +39,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
index e76f511..c1708e2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_global_loop_count : i32;
@@ -68,7 +68,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
index 47f4ba5..b463cdc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -92,7 +92,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
index 6b5e54f..cad8ee4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 6u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -130,7 +130,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
index 35fc7e0..b932d17 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -92,7 +92,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_v1_1 : vec4<f32>;
+  x_GLF_v1_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
index 263a8ba..3fcd25f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -41,7 +41,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
index 05bb179..f5899f7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -67,7 +67,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
index 7898eef..fe1d9b7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -91,7 +91,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
index cf090bb..8957d40 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -38,7 +38,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
index ce84e11..969ad9f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -43,7 +43,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
index 23d0860..b797548 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -20,7 +20,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
index 99326cd..26d5982 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
index 54e568d..7db29fd 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
@@ -1,11 +1,11 @@
 struct S {
-  a : i32;
-  b : i32;
-  c : i32;
+  a : i32,
+  b : i32,
+  c : i32,
 }
 
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_10 : buf0;
@@ -84,7 +84,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
index 1599fae..92fa2cf 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  two : f32;
+  two : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -33,7 +33,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
index f9db285..711a60f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  three : f32;
+  three : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -51,7 +51,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
index cea9bba..4558a2f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -48,7 +48,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
index 9bb112b..078abbe 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
@@ -13,7 +13,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
index 7818c61..122db07 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
@@ -1,16 +1,16 @@
 struct buf1 {
-  one : u32;
+  one : u32,
 }
 
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -57,7 +57,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
index df3fc62..51d8e24 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -32,7 +32,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
index 7ada5cd..cf1d21a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
@@ -1,34 +1,34 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf2 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 struct strided_arr_2 {
   @size(16)
-  el : u32;
+  el : u32,
 }
 
 type Arr_2 = array<strided_arr_2, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_uint_values : Arr_2;
+  x_GLF_uniform_uint_values : Arr_2,
 }
 
 @group(0) @binding(2) var<uniform> x_8 : buf2;
@@ -72,7 +72,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
index c3a24b8..77c853a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
@@ -649,7 +649,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
index 6bec4c1..e24074c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct buf2 {
-  one : f32;
+  one : f32,
 }
 
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> m : mat4x2<f32>;
@@ -129,7 +129,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
index 729f23b..c8d7036 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -99,7 +99,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
index 089f8e0..12ea1f8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> x_GLF_global_loop_count : i32;
@@ -330,7 +330,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
index 950882b..adfcd1b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 19u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -122,7 +122,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
index 4af0a89..0a1c942 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -74,7 +74,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
index eaa284a..d39091b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -74,7 +74,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
index a0da283..aa3bb95 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -75,7 +75,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
index 7a76390..6ea41ef 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -37,7 +37,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
index 2c39f66..9e62836 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_7 : buf1;
@@ -105,7 +105,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
index cd8567d..12f14a2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -230,7 +230,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
index a6ac0b6..a08b68a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -102,7 +102,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
index 7618e09..5df8e0f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
index 60f869d..24bcc10 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  three : i32;
+  three : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -18,7 +18,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
index 984753a..5e3792b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -82,7 +82,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
index 04b16df..3e01f1a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct buf2 {
-  one : f32;
+  one : f32,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -68,7 +68,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
index 0b5902f..8278bc5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct buf2 {
-  zero : i32;
+  zero : i32,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -65,7 +65,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
index 8882447..efc6249 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -41,7 +41,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
index 5aed451..94ee900 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
index 00b57c0..3a4bee7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
index 60211d0..61e7a69 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -33,7 +33,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
index a515894..42b3530 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
@@ -1,10 +1,10 @@
 struct S {
-  x : i32;
-  y : i32;
+  x : i32,
+  y : i32,
 }
 
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_10 : buf0;
@@ -58,7 +58,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
index e7faacf..95351ab 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_7 : buf1;
@@ -81,7 +81,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_v1_1 : vec4<f32>;
+  x_GLF_v1_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
index 387f0a5..2459e4c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -81,7 +81,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
index 4944876..ef12407 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct S {
-  data : i32;
+  data : i32,
 }
 
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_11 : buf0;
@@ -77,7 +77,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
index 6b9bbb3..79be73a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -43,7 +43,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
index 8467d5e..e15d8de 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 struct buf2 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -69,7 +69,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
index cf36298..de5ae78 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -61,7 +61,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
index db4f7d9..98a9ebd 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 7u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -229,7 +229,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
index bb7d6a2..66e1050 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -180,7 +180,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
index 0815c76..4613f05 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -50,7 +50,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
index c7f05a3..0665057 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
index 06b3886..a72e332 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -54,7 +54,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
index c7a66ea..895e284 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
@@ -1,16 +1,16 @@
 struct buf1 {
-  v1 : vec2<f32>;
+  v1 : vec2<f32>,
 }
 
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(1) var<uniform> x_5 : buf1;
@@ -46,7 +46,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
index d490b79..fe3a5c4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -29,7 +29,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
index a4f0de8..8c201e0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 6u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -107,7 +107,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
index ddff79d..c93962f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -70,7 +70,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
index 523e372..3ec072c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct S {
-  arr : array<i32, 2u>;
+  arr : array<i32, 2u>,
 }
 
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_9 : buf0;
@@ -78,7 +78,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
index 3842319..e655d57 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 struct buf1 {
-  zero : i32;
+  zero : i32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -52,7 +52,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
index 792fce6..260dac0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  sequence : vec4<i32>;
+  sequence : vec4<i32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -53,7 +53,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
index 270d4d4..1ee580f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -36,7 +36,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
index 157dee7..ede3ec0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  two : i32;
+  two : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -39,7 +39,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
index f938ffc..829a0a8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  two : u32;
+  two : u32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -21,7 +21,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
index e2d357b..b7f1559 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -55,7 +55,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
index 88ecd13..22f846d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  three : f32;
+  three : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -21,7 +21,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
index 7fc91e2..a52fd11 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -92,7 +92,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
index 3416a22..c821a0b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -47,7 +47,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
index cbc81df..32d7182 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -25,7 +25,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
index ecc2102..7371365 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  three : i32;
+  three : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
index d6067ca..a1cbaf4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -31,7 +31,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
index 96d2f7f..60e6c3a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -27,7 +27,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
index 5865375..b2ff3d7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -87,7 +87,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
index 015df28..c38f758 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> g : i32;
@@ -46,7 +46,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
index d13d47f..236b092 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -69,7 +69,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
index a0131fa..36f9060 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -51,7 +51,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
index e59332f..cec76af 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
@@ -16,7 +16,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
index 0c45e7e..1b4b63d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
@@ -1,35 +1,35 @@
 struct S {
-  numbers : array<f32, 3u>;
+  numbers : array<f32, 3u>,
 }
 
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct buf2 {
-  zeroVec : vec2<f32>;
+  zeroVec : vec2<f32>,
 }
 
 struct buf3 {
-  oneVec : vec2<f32>;
+  oneVec : vec2<f32>,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_7 : buf1;
@@ -89,7 +89,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
index 21d9b19..07c860c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct buf2 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -58,7 +58,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
index 6431dab..36e7882 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -102,7 +102,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
index c498287..57b1326 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
@@ -1,27 +1,27 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct buf2 {
-  zero : f32;
+  zero : f32,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -95,7 +95,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
index 1bc947c..439064c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  two : f32;
+  two : f32,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -28,7 +28,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
index e684f9c..9507f31 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
@@ -1,20 +1,20 @@
 struct S {
-  data : i32;
+  data : i32,
 }
 
 struct buf1 {
-  v1 : vec2<f32>;
+  v1 : vec2<f32>,
 }
 
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 5u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(1) var<uniform> x_8 : buf1;
@@ -159,7 +159,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
index e5759b7..37acd79 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
@@ -19,7 +19,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
index 69cc7c5..4f20354 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -51,7 +51,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
index 2931fd0..91d1ace 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -20,7 +20,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
index 0f4fbe2..dc95ab7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
@@ -1,16 +1,16 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct buf1 {
-  v1 : vec2<f32>;
+  v1 : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -53,7 +53,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
index e01dbdd..408951f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
@@ -1,16 +1,16 @@
 struct S {
-  data : i32;
+  data : i32,
 }
 
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_9 : buf0;
@@ -91,7 +91,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
index 5cf7c89..e00fdb4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
@@ -1,34 +1,34 @@
 struct strided_arr {
   @size(16)
-  el : u32;
+  el : u32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_uint_values : Arr;
+  x_GLF_uniform_uint_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 struct strided_arr_2 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_2 = array<strided_arr_2, 3u>;
 
 struct buf2 {
-  x_GLF_uniform_float_values : Arr_2;
+  x_GLF_uniform_float_values : Arr_2,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -67,7 +67,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
index 2887f06..ab2fe1e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -95,7 +95,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
index 82e4656..3e9258a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf1 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf0 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -94,7 +94,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
index 7cb7534..6f1222b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : i32;
+  one : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -32,7 +32,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
index 9a3da98..7f6f64d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -57,7 +57,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
index 037beb4..f609495 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -58,7 +58,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
index b7ec776..d60a6c4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  two : i32;
+  two : i32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -36,7 +36,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
index 703f690..6c21a50 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -61,7 +61,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
index 557c9f0..6591588 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
@@ -1,34 +1,34 @@
 struct strided_arr {
   @size(16)
-  el : u32;
+  el : u32,
 }
 
 type Arr = array<strided_arr, 1u>;
 
 struct buf2 {
-  x_GLF_uniform_uint_values : Arr;
+  x_GLF_uniform_uint_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 struct strided_arr_2 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_2 = array<strided_arr_2, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_2;
+  x_GLF_uniform_int_values : Arr_2,
 }
 
 @group(0) @binding(2) var<uniform> x_6 : buf2;
@@ -61,7 +61,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
index 424cd4f..8360d2e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
@@ -1,12 +1,12 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 16u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -155,7 +155,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
index 25da29e..06406f2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  quarter : f32;
+  quarter : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
index 2a585dc..b8fde85 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -28,7 +28,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
index e1b2e2c..8cdf805 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
@@ -19,7 +19,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
index 11dc292..ffddefb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
@@ -15,7 +15,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
index 0823499..2878e1d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 3u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -66,7 +66,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
index bb7f385..878faea 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -61,7 +61,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
index 9ee59a9..1770f67 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
@@ -1,34 +1,34 @@
 struct strided_arr {
   @size(16)
-  el : u32;
+  el : u32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf1 {
-  x_GLF_uniform_uint_values : Arr;
+  x_GLF_uniform_uint_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr_1 = array<strided_arr_1, 1u>;
 
 struct buf2 {
-  x_GLF_uniform_float_values : Arr_1;
+  x_GLF_uniform_float_values : Arr_1,
 }
 
 struct strided_arr_2 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_2 = array<strided_arr_2, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_2;
+  x_GLF_uniform_int_values : Arr_2,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -67,7 +67,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
index ff814a8..d3898be 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
@@ -1,23 +1,23 @@
 struct strided_arr {
   @size(16)
-  el : f32;
+  el : f32,
 }
 
 type Arr = array<strided_arr, 3u>;
 
 struct buf1 {
-  x_GLF_uniform_float_values : Arr;
+  x_GLF_uniform_float_values : Arr,
 }
 
 struct strided_arr_1 {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr_1 = array<strided_arr_1, 4u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr_1;
+  x_GLF_uniform_int_values : Arr_1,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -114,7 +114,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
index 5e99461..0a3e1b3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
@@ -1,18 +1,18 @@
 struct S {
-  a : i32;
-  b : i32;
-  c : i32;
+  a : i32,
+  b : i32,
+  c : i32,
 }
 
 struct strided_arr {
   @size(16)
-  el : i32;
+  el : i32,
 }
 
 type Arr = array<strided_arr, 2u>;
 
 struct buf0 {
-  x_GLF_uniform_int_values : Arr;
+  x_GLF_uniform_int_values : Arr,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -58,7 +58,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
index e6a2af2..8aaf0af 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_9 : buf0;
@@ -88,7 +88,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
index a50c9a5..f4c8f8e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct theSSBO {
-  out_data : i32;
+  out_data : i32,
 }
 
 struct buf1 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<storage, read_write> x_4 : theSSBO;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
index da5838e..df826b8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -63,7 +63,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
index c5ace74..f1a3930 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -44,7 +44,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
index 94267ba..888ee7a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
@@ -33,7 +33,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
index df538e6..6cfa6d9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -39,7 +39,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
index aa31ab8..d557692 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
@@ -48,7 +48,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
index 2a4f0b3..943fe6d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
@@ -34,7 +34,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
index fd40581..b328851 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
@@ -41,7 +41,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
index 79e1736..e35d29b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -65,7 +65,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
index 25faad2..896c857 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
@@ -25,7 +25,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
index 7b95219..e449404 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
@@ -1,5 +1,5 @@
 struct theSSBO {
-  out_data : i32;
+  out_data : i32,
 }
 
 @group(0) @binding(0) var<storage, read_write> x_4 : theSSBO;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
index cdc6de9..d5891ce 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -74,7 +74,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
index 940390e..5e29cbc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
@@ -32,7 +32,7 @@
 
 struct main_out {
   @location(0)
-  color_1 : vec4<f32>;
+  color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
index d486d56..8d1c3d7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
@@ -16,7 +16,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
index 7b9e840..4b56ed3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
@@ -32,7 +32,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
index 8aecab4..fa91391 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_9 : buf0;
@@ -78,7 +78,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
index 70a3136..9ee645e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -51,7 +51,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
index b464580..96b3c21 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -139,7 +139,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
index a519cda..5ba76cf 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -37,7 +37,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
index 52d4689..6dca256 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -262,7 +262,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
index 6e748ad..b6091b1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -101,7 +101,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
index 66e65dd..c9a7503 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
@@ -1,6 +1,6 @@
 struct S {
-  f1 : i32;
-  f2 : mat2x2<f32>;
+  f1 : i32,
+  f2 : mat2x2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
index 92801a9..dec595e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -74,7 +74,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
index 2aec8e1..baeeb55 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
@@ -38,7 +38,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
index 38ab609..a5552f4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
@@ -1,9 +1,9 @@
 struct BinarySearchObject {
-  prime_numbers : array<i32, 10u>;
+  prime_numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -81,7 +81,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
index f9ee32d..51edc79 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
@@ -25,7 +25,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
index a62a83d..2f9bda5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -29,7 +29,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
index 098e3d4..bb411e1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
@@ -12,7 +12,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
index 59b28a4..a35a515 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  one : f32;
+  one : f32,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -62,7 +62,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
index daefad0..d0af691 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
@@ -31,7 +31,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
index 8ce4f4f..1cd8dda 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
index 837c47a..cd954d2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -110,7 +110,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
index 23b5e27..51cb5d6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -37,7 +37,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
index 0997a87..9fd97b8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : i32;
+  zero : i32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -38,7 +38,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
index 265a83d..fbc53b7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -43,7 +43,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
index 91e6cc5..25a5811 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
@@ -50,7 +50,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
index c231474..9b2a3d6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
@@ -64,7 +64,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
index 3330f17..7109cc1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -102,7 +102,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
index 73def15..21218c2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -90,7 +90,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
index a712e9f..6a68dff 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -67,7 +67,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
index 0c96b1c..71e09ec 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
@@ -22,7 +22,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
index 02d8afb..3374e31 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -336,7 +336,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
index 59fca83..8ad4074 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -185,7 +185,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
index 4e36e93..bbeb974 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -190,7 +190,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
index 19e19cc..ef8966d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -44,7 +44,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
index 31d6b64..63a5937 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -45,7 +45,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
index 9d5f9ea..c80d66f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -82,7 +82,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
index 43d108c..6f2ad79 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -87,7 +87,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
index c70796b..539e851 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -345,7 +345,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
index dc32f7e..aba0ac9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -101,7 +101,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
index bfd78d5..a95f9f7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -102,7 +102,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
index 9dfc13e..8b594d4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct buf1 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -300,7 +300,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
index 036338a..3ab90cb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
@@ -1,9 +1,9 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct buf1 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -304,7 +304,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
index d370e77..6709a3c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
@@ -1,9 +1,9 @@
 struct buf1 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -107,7 +107,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
index 37efe23..b6e14fc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
@@ -1,9 +1,9 @@
 struct buf1 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -107,7 +107,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
index c606b6e..df0ae14 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
@@ -1,9 +1,9 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct buf1 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -304,7 +304,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
index 0adca7a..c05ac33 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
@@ -1,7 +1,7 @@
 struct BST {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -618,7 +618,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
index 3fcf4d8..76a3bfc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -85,7 +85,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
index 9bcb061..e5be06f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -48,7 +48,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
index cbc118d..8147bc1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -45,7 +45,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
index c238b67..69482c9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
@@ -1,9 +1,9 @@
 struct buf1 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -127,7 +127,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
index c07d706..db23b3e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
@@ -1,9 +1,9 @@
 struct buf1 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -184,7 +184,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
index 7c5dd28..949a77d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -51,7 +51,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
index 3c0050b..abd147e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -58,7 +58,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
index e02a33e..6355748 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -185,7 +185,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
index 2495fa7..af7ad71 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -380,7 +380,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
index e0d1111..8449a16 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -342,7 +342,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
index 95acb5d..0dda483 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -329,7 +329,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
index 16f68e0..3bfc9db 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -326,7 +326,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
index f7f0b3f..8f8ed41 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -294,7 +294,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
index 8349dda..1c4985d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -309,7 +309,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
index 917958b..3344447 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -402,7 +402,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
index 4a42987..57694d1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -401,7 +401,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
index 55ff301..cc20c95 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -292,7 +292,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
index 57a32ca..b41f89b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -289,7 +289,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
index d64046c..b88eb31 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -93,7 +93,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
index e551bfd..6f8c83d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -96,7 +96,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
index c27b394..55cd6e5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -93,7 +93,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
index 55fd9b3..903d43b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -96,7 +96,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
index b192c56..1692b79 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -93,7 +93,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
index 45adfa8..f2297b1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -94,7 +94,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
index a9e80a3..227ca66 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -87,7 +87,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
index 641ef45..98b1185 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -72,7 +72,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
index 4ec0b9a..48f2dd5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -78,7 +78,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
index c83ba58..7580826 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -244,7 +244,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
index cfe8fd9..6728048 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
@@ -1,9 +1,9 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -244,7 +244,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
index 67dd207..3500ff3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -91,7 +91,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
index b80b4b7..5345cd6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -88,7 +88,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
index 36e7867..4a1f3e2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
@@ -1,7 +1,7 @@
 struct BST {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -616,7 +616,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
index 89073f2..68ea6e3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
@@ -1,11 +1,11 @@
 struct BST {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -947,7 +947,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
index 46589a9..60e5290 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
@@ -1,7 +1,7 @@
 struct BST {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 var<private> tree_1 : array<BST, 10u>;
@@ -251,7 +251,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
index 78d973e..e690b00 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
@@ -1,7 +1,7 @@
 struct BST {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 var<private> tree_1 : array<BST, 10u>;
@@ -263,7 +263,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
index 0b03730..ec9d97f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
@@ -1,11 +1,11 @@
 struct BST {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> tree_1 : array<BST, 10u>;
@@ -281,7 +281,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
index 9c75ed4..e698948 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
@@ -1,7 +1,7 @@
 struct BST {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 var<private> tree : array<BST, 10u>;
@@ -251,7 +251,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
index daf4de0..c1f21a4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
@@ -1,15 +1,15 @@
 struct BST {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -305,7 +305,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
index b608976..7b48be9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -56,7 +56,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
index 4dc959d..3a8aca0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
@@ -1,9 +1,9 @@
 struct buf1 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 @group(0) @binding(1) var<uniform> x_6 : buf1;
@@ -206,7 +206,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
index 426932f..594f9f8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_13 : buf0;
@@ -104,7 +104,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
index 2433ecb..14441ba 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
@@ -1,9 +1,9 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct buf1 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_13 : buf0;
@@ -120,7 +120,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
index 30b08a7..0013539 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_10 : buf0;
@@ -107,7 +107,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
index 1b5bfe5..81e620c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
@@ -1,9 +1,9 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct buf1 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_10 : buf0;
@@ -121,7 +121,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
index 6ebc27c..c2c1977 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
@@ -1,9 +1,9 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct buf1 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_13 : buf0;
@@ -136,7 +136,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
index 3e160ea..b324fbf 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_13 : buf0;
@@ -109,7 +109,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
index 1ddf4e5..1c47a91 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -328,7 +328,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
index 0765342..0cd476e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -332,7 +332,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
index b51c83f..bdd78d3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> data : array<i32, 10u>;
@@ -304,7 +304,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
index ea70bcb..5e852c6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
@@ -1,9 +1,9 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -268,7 +268,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
index 0e951d7..046de74 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -250,9 +250,9 @@
 
 struct main_out {
   @location(0)
-  frag_color_1 : vec4<f32>;
+  frag_color_1 : vec4<f32>,
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
index 4cdb33a..206c4d1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
@@ -10,7 +10,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
index ce231b3..692a93a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
@@ -1,13 +1,13 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct buf1 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -261,9 +261,9 @@
 
 struct main_out {
   @location(0)
-  frag_color_1 : vec4<f32>;
+  frag_color_1 : vec4<f32>,
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
index 502e51c..1a71e0c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
@@ -1,9 +1,9 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -248,9 +248,9 @@
 
 struct main_out {
   @location(0)
-  frag_color_1 : vec4<f32>;
+  frag_color_1 : vec4<f32>,
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
index d0f76a3..c3d6185 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
@@ -1,9 +1,9 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -254,9 +254,9 @@
 
 struct main_out {
   @location(0)
-  frag_color_1 : vec4<f32>;
+  frag_color_1 : vec4<f32>,
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
index 7cf1ccf..64489a9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
@@ -1,13 +1,13 @@
 struct QuicksortObject {
-  numbers : array<i32, 10u>;
+  numbers : array<i32, 10u>,
 }
 
 struct buf1 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> obj : QuicksortObject;
@@ -259,9 +259,9 @@
 
 struct main_out {
   @location(0)
-  frag_color_1 : vec4<f32>;
+  frag_color_1 : vec4<f32>,
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
index 23257d4..a3c4802 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -114,7 +114,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
index 4afa9bf..d74e2b4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -131,7 +131,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
index 0bc3aff..ba05600 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -122,7 +122,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
index 7308dcf..09c4afb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_15 : buf0;
@@ -151,7 +151,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
index 233ce2d..00375d4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -122,7 +122,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
index b1ffefc..febe37b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -116,7 +116,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
index 749ca86..9dfb234 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
@@ -1,9 +1,9 @@
 struct buf1 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct buf0 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 @group(0) @binding(1) var<uniform> x_11 : buf1;
@@ -160,7 +160,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
index b2c18a9..bf21950 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
@@ -1,11 +1,11 @@
 struct struct_base {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> struct_array : array<struct_base, 3u>;
@@ -40,7 +40,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
index 1bb3c7d..9c94b7e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
 struct S {
-  f0 : i32;
-  f1 : vec3<bool>;
+  f0 : i32,
+  f1 : vec3<bool>,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -41,7 +41,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
index 758e2f7..aed4596 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
@@ -1,9 +1,9 @@
 struct S {
-  field0 : vec4<f32>;
+  field0 : vec4<f32>,
 }
 
 struct S_1 {
-  field0 : vec4<f32>;
+  field0 : vec4<f32>,
 }
 
 var<private> x_3 : vec4<f32>;
@@ -21,7 +21,7 @@
 
 struct main_out {
   @location(0)
-  x_3_1 : vec4<f32>;
+  x_3_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
index 1c67a27..ee8dc03 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -25,7 +25,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
index 90e1d6d..d87c600 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  zero : f32;
+  zero : f32,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -44,7 +44,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
index af459fa..0290964 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -63,7 +63,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
index 8bf7f3c..68b1a0e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
@@ -15,7 +15,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
index 7c1c15d..349f964 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -63,7 +63,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
index c5f28c5..c1f5d4a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
index beed209..787c25f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -98,7 +98,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
index ba1d791..dbcb808 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
@@ -1,11 +1,11 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 type RTArr = array<u32>;
 
 struct doesNotMatter {
-  x_compute_data : RTArr;
+  x_compute_data : RTArr,
 }
 
 var<private> GLF_live2gl_FragCoord : vec4<f32>;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
index 8dcda45..dbd9c5a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  matrix_a_uni : mat4x4<f32>;
+  matrix_a_uni : mat4x4<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_8 : buf0;
@@ -58,7 +58,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
index 0fb290d..3603274 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
@@ -1,10 +1,10 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct StructType {
-  col : vec3<f32>;
-  bbbb : vec4<bool>;
+  col : vec3<f32>,
+  bbbb : vec4<bool>,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -68,7 +68,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
index 5c4e833..6ce6f52 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
@@ -57,7 +57,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
index 61d9553..dd12134 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -81,7 +81,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
index bc48f90..060017b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<f32>;
 
 struct doesNotMatter {
-  x_compute_data : RTArr;
+  x_compute_data : RTArr,
 }
 
 @group(0) @binding(0) var<storage, read_write> x_9 : doesNotMatter;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
index cd4884a..5f7d58c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -31,7 +31,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
index 1792740..7e36aee 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -59,7 +59,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
index e6a7075..9af2e55 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_5 : buf0;
@@ -32,7 +32,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
index 7f76a75..a577af6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
@@ -23,7 +23,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
index 8680b20..29fc085 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
@@ -1,15 +1,15 @@
 struct buf1 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct buf2 {
-  resolution : vec2<f32>;
+  resolution : vec2<f32>,
 }
 
 type RTArr = array<i32>;
 
 struct doesNotMatter {
-  x_compute_data : RTArr;
+  x_compute_data : RTArr,
 }
 
 var<private> gl_GlobalInvocationID : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
index 76b8e40..28a95e6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -31,7 +31,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
index 982fd9e..2ce27b5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_7 : buf0;
@@ -36,7 +36,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
index 6c95054..7edecc2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
@@ -53,7 +53,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 };
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
index 0feecef..d983488 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injected : vec2<f32>;
+  injected : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -35,7 +35,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
index 60fe332..27ea484 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
@@ -39,7 +39,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
index 7981de4..aae7862 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
@@ -38,7 +38,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
index aeb0a8b..243b48b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> gl_FragCoord : vec4<f32>;
@@ -99,7 +99,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
index ab3c911..a7f2419 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
index 62c9f75..e46dd74 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 var<private> x_GLF_color : vec4<f32>;
@@ -36,7 +36,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
index 4579139..b33f560 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injected : i32;
+  injected : i32,
 }
 
 @group(0) @binding(0) var<uniform> x_9 : buf0;
@@ -95,7 +95,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
index ab619e7..d4ea4f9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
@@ -1,16 +1,16 @@
 struct BST {
-  data : i32;
-  leftIndex : i32;
-  rightIndex : i32;
+  data : i32,
+  leftIndex : i32,
+  rightIndex : i32,
 }
 
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 struct Obj {
-  odd_numbers : array<f32, 10u>;
-  even_numbers : array<f32, 10u>;
+  odd_numbers : array<f32, 10u>,
+  even_numbers : array<f32, 10u>,
 }
 
 var<private> tree_1 : array<BST, 10u>;
@@ -408,7 +408,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
index 537ef0d..772af1d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
@@ -88,7 +88,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
index fdd4a22..13f20ff 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
@@ -1,5 +1,5 @@
 struct buf0 {
-  injectionSwitch : vec2<f32>;
+  injectionSwitch : vec2<f32>,
 }
 
 @group(0) @binding(0) var<uniform> x_6 : buf0;
@@ -20,7 +20,7 @@
 
 struct main_out {
   @location(0)
-  x_GLF_color_1 : vec4<f32>;
+  x_GLF_color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
index 55a661a..89672bd 100644
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
@@ -1,13 +1,13 @@
 type Arr = array<i32, 8u>;
 
 struct In2 {
-  data_in2 : Arr;
+  data_in2 : Arr,
 }
 
 type Arr_1 = array<i32, 1024u>;
 
 struct Out0 {
-  data_out0 : Arr_1;
+  data_out0 : Arr_1,
 }
 
 type Arr_2 = array<i32, 512u>;
@@ -15,11 +15,11 @@
 type Arr_3 = array<i32, 512u>;
 
 struct In1 {
-  data_in1 : Arr_3;
+  data_in1 : Arr_3,
 }
 
 struct In0 {
-  data_in0 : Arr_3;
+  data_in0 : Arr_3,
 }
 
 var<private> gl_WorkGroupID : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
index cc2aa36..d373a84 100644
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
@@ -1,13 +1,13 @@
 type Arr = array<i32, 8u>;
 
 struct In2 {
-  data_in2 : Arr;
+  data_in2 : Arr,
 }
 
 type Arr_1 = array<i32, 1024u>;
 
 struct Out0 {
-  data_out0 : Arr_1;
+  data_out0 : Arr_1,
 }
 
 type Arr_2 = array<i32, 512u>;
@@ -15,11 +15,11 @@
 type Arr_3 = array<i32, 512u>;
 
 struct In0 {
-  data_in0 : Arr_3;
+  data_in0 : Arr_3,
 }
 
 struct In1 {
-  data_in1 : Arr_3;
+  data_in1 : Arr_3,
 }
 
 var<private> gl_WorkGroupID : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
index aa4df6d..08343e5 100644
--- a/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
+++ b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
@@ -7,7 +7,7 @@
 
 struct main_out {
   @location(0)
-  color_1 : vec4<f32>;
+  color_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
index acde8f2..adc5669 100644
--- a/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
+++ b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
@@ -13,7 +13,7 @@
 
 struct main_out {
   @location(0)
-  color_out_1 : vec4<f32>;
+  color_out_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
index f524a86..70d0754 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
@@ -1,11 +1,11 @@
 struct Buf1 {
-  result : i32;
+  result : i32,
 }
 
 type RTArr = array<u32>;
 
 struct Buf0 {
-  values : RTArr;
+  values : RTArr,
 }
 
 @group(0) @binding(1) var<storage, read_write> x_4 : Buf1;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
index d3d85d5..cb066ee 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_2 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
index e7f552a..733a1f0 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_2 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
index 633a9fb..c6ad43c 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_2 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
index ff1b5f6..5ccc2a7 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_2 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
index 4985024..d7b159f 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<i32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_3 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
index 9d2fe9d..a8ef5a2 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_3 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
index bfee393..5943d91 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_3 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
index f0aa128..2a2b3bd 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_3 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
index 3417a39..e1a9836 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_3 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
index 005516e..293a48c 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_2 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
index 18c055c..08ebc65 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<u32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_2 : vec3<u32>;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
index bb8905f..47dac83 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
@@ -15,9 +15,9 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  x_4_1 : u32;
+  x_4_1 : u32,
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
index 3ccee42..5fafe44 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
@@ -11,7 +11,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
index b7eafcb..48f911c 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
@@ -10,9 +10,9 @@
 
 struct main_out {
   @location(0)
-  color_out_1 : vec4<f32>;
+  color_out_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
index 3770c90..4301036 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
@@ -11,7 +11,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
index f62cb2c..4b77847 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
@@ -10,9 +10,9 @@
 
 struct main_out {
   @location(0)
-  color_out_1 : vec4<f32>;
+  color_out_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
index a322d7e..8535066 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
@@ -11,7 +11,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
index b205578..b4531a7 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
@@ -10,9 +10,9 @@
 
 struct main_out {
   @location(0)
-  color_out_1 : vec4<f32>;
+  color_out_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
index d2c258c..95d7f54 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
@@ -11,7 +11,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
index bba37c6..6d7e13d 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
@@ -10,9 +10,9 @@
 
 struct main_out {
   @location(0)
-  color_out_1 : vec4<f32>;
+  color_out_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
index 925f442..ad8f4af 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
@@ -11,7 +11,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
index 98731f7..20e02ac 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
@@ -11,7 +11,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
index 6b1b733..9f3a0ac 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
@@ -10,9 +10,9 @@
 
 struct main_out {
   @location(0)
-  outColor_1 : vec4<f32>;
+  outColor_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
index 92adb7d..ff8fc9a 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
@@ -10,9 +10,9 @@
 
 struct main_out {
   @location(0)
-  outColor_1 : vec4<f32>;
+  outColor_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
index 053ae0d..7039723 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
@@ -10,9 +10,9 @@
 
 struct main_out {
   @location(0)
-  outColor_1 : vec4<f32>;
+  outColor_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
index cf67d74..7d01c21 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
@@ -13,9 +13,9 @@
 
 struct main_out {
   @location(0)
-  outColor_1 : vec4<f32>;
+  outColor_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
index f7a72e0..2a68cc4 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
@@ -10,9 +10,9 @@
 
 struct main_out {
   @location(0)
-  outColor_1 : vec4<f32>;
+  outColor_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
index a30f347..e7b8508 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
@@ -10,9 +10,9 @@
 
 struct main_out {
   @location(0)
-  outColor_1 : vec4<f32>;
+  outColor_1 : vec4<f32>,
   @builtin(frag_depth)
-  gl_FragDepth_1 : f32;
+  gl_FragDepth_1 : f32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
index 5c27e24..cf79af0 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
@@ -13,9 +13,9 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
   @location(0) @interpolate(flat)
-  pos_1 : u32;
+  pos_1 : u32,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
index 8a93d80..dbe9cde 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
@@ -15,9 +15,9 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  x_4_1 : i32;
+  x_4_1 : i32,
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
index fb1a54d..a4d22f2 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
@@ -20,7 +20,7 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  x_4_1 : i32;
+  x_4_1 : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
index 71e1868..18d4b52 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
@@ -15,7 +15,7 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  x_4_1 : i32;
+  x_4_1 : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
index 7e70a5a..88ebe31 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
@@ -17,7 +17,7 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  out_data_1 : i32;
+  out_data_1 : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
index 4e8450c..1c90d21 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
@@ -15,7 +15,7 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  x_4_1 : i32;
+  x_4_1 : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
index 1b01c40b..c57b476 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<i32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_2 : vec4<f32>;
@@ -26,7 +26,7 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  x_4_1 : i32;
+  x_4_1 : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
index 678341a..1db1c34 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
@@ -1,7 +1,7 @@
 type RTArr = array<i32>;
 
 struct S {
-  field0 : RTArr;
+  field0 : RTArr,
 }
 
 var<private> x_2 : vec4<f32>;
@@ -26,7 +26,7 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  x_4_1 : i32;
+  x_4_1 : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
index c370d46..c1412bd 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
@@ -30,7 +30,7 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  x_4_1 : i32;
+  x_4_1 : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
index bf07808..97fb1ae 100644
--- a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
+++ b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
@@ -10,7 +10,7 @@
 
 struct main_out {
   @builtin(position)
-  gl_Position : vec4<f32>;
+  gl_Position : vec4<f32>,
 }
 
 @stage(vertex)
diff --git a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
index 66e1440..63fb5d0 100644
--- a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
@@ -23,7 +23,7 @@
 
 struct main_out {
   @location(0) @interpolate(flat)
-  expect_1 : i32;
+  expect_1 : i32,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl b/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
index 6f6e8f5..964f60c 100644
--- a/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
+++ b/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
@@ -10,7 +10,7 @@
 
 struct main_out {
   @location(0)
-  color_out_1 : vec4<f32>;
+  color_out_1 : vec4<f32>,
 }
 
 @stage(fragment)
diff --git a/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl b/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
index e05c003..777eb67 100644
--- a/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
@@ -11,7 +11,7 @@
 
 struct main_out {
   @location(0)
-  result_1 : vec4<f32>;
+  result_1 : vec4<f32>,
 }
 
 @stage(fragment)