writer/wgsl: Ensure that test programs are valid

Make all test programs valid.

Change-Id: Id7eb790519e3dec30a5b826f06585d277995b9b5
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50720
Auto-Submit: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/writer/wgsl/generator_impl_binary_test.cc b/src/writer/wgsl/generator_impl_binary_test.cc
index e83bd88..7c37d9b 100644
--- a/src/writer/wgsl/generator_impl_binary_test.cc
+++ b/src/writer/wgsl/generator_impl_binary_test.cc
@@ -31,6 +31,17 @@
 TEST_P(WgslBinaryTest, Emit) {
   auto params = GetParam();
 
+  auto op_ty = [&]() -> ast::Type* {
+    if (params.op == ast::BinaryOp::kLogicalAnd ||
+        params.op == ast::BinaryOp::kLogicalOr) {
+      return ty.bool_();
+    } else {
+      return ty.u32();
+    }
+  };
+
+  Global("left", op_ty(), ast::StorageClass::kPrivate);
+  Global("right", op_ty(), ast::StorageClass::kPrivate);
   auto* left = Expr("left");
   auto* right = Expr("right");
 
diff --git a/src/writer/wgsl/generator_impl_global_decl_test.cc b/src/writer/wgsl/generator_impl_global_decl_test.cc
index a77acee..50b8269 100644
--- a/src/writer/wgsl/generator_impl_global_decl_test.cc
+++ b/src/writer/wgsl/generator_impl_global_decl_test.cc
@@ -101,27 +101,30 @@
 }
 
 TEST_F(WgslGeneratorImplTest, Emit_Global_Sampler) {
-  Global("s", ty.sampler(ast::SamplerKind::kSampler), ast::StorageClass::kNone);
+  Global("s", ty.sampler(ast::SamplerKind::kSampler), ast::StorageClass::kNone,
+         nullptr,
+         {create<ast::GroupDecoration>(0), create<ast::BindingDecoration>(0)});
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate(nullptr)) << gen.error();
-  EXPECT_EQ(gen.result(), "  var s : sampler;\n");
+  EXPECT_EQ(gen.result(), "  [[group(0), binding(0)]] var s : sampler;\n");
 }
 
 TEST_F(WgslGeneratorImplTest, Emit_Global_Texture) {
   auto st = ty.sampled_texture(ast::TextureDimension::k1d, ty.f32());
   Global("t", ty.access(ast::AccessControl::kReadOnly, st),
-         ast::StorageClass::kNone);
+         ast::StorageClass::kNone, nullptr,
+         {create<ast::GroupDecoration>(0), create<ast::BindingDecoration>(0)});
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate(nullptr)) << gen.error();
-  EXPECT_EQ(gen.result(), "  var t : [[access(read)]] texture_1d<f32>;\n");
+  EXPECT_EQ(gen.result(), "  [[group(0), binding(0)]] var t : [[access(read)]] texture_1d<f32>;\n");
 }
 
 }  // namespace
diff --git a/src/writer/wgsl/generator_impl_identifier_test.cc b/src/writer/wgsl/generator_impl_identifier_test.cc
index 41330a9..2a66db1 100644
--- a/src/writer/wgsl/generator_impl_identifier_test.cc
+++ b/src/writer/wgsl/generator_impl_identifier_test.cc
@@ -22,6 +22,7 @@
 using WgslGeneratorImplTest = TestHelper;
 
 TEST_F(WgslGeneratorImplTest, EmitIdentifierExpression_Single) {
+  Global("glsl", ty.f32(), ast::StorageClass::kPrivate);
   auto* i = Expr("glsl");
   WrapInFunction(i);
 
diff --git a/src/writer/wgsl/generator_impl_variable_test.cc b/src/writer/wgsl/generator_impl_variable_test.cc
index 055e085..0605aac 100644
--- a/src/writer/wgsl/generator_impl_variable_test.cc
+++ b/src/writer/wgsl/generator_impl_variable_test.cc
@@ -59,10 +59,7 @@
   auto* v = Global("a", ty.f32(), ast::StorageClass::kPrivate, nullptr,
                    ast::DecorationList{
                        Builtin(ast::Builtin::kPosition),
-                       create<ast::BindingDecoration>(0),
-                       create<ast::GroupDecoration>(1),
                        Location(2),
-                       create<ast::OverrideDecoration>(42),
                    });
 
   GeneratorImpl& gen = Build();
@@ -70,7 +67,7 @@
   ASSERT_TRUE(gen.EmitVariable(v)) << gen.error();
   EXPECT_EQ(
       gen.result(),
-      R"([[builtin(position), binding(0), group(1), location(2), override(42)]] var<private> a : f32;
+      R"([[builtin(position), location(2)]] var<private> a : f32;
 )");
 }
 
diff --git a/src/writer/wgsl/test_helper.h b/src/writer/wgsl/test_helper.h
index 074264f..b783938 100644
--- a/src/writer/wgsl/test_helper.h
+++ b/src/writer/wgsl/test_helper.h
@@ -43,6 +43,11 @@
       return *gen_;
     }
     program = std::make_unique<Program>(std::move(*this));
+    diag::Formatter formatter;
+    [&]() {
+      ASSERT_TRUE(program->IsValid())
+          << formatter.format(program->Diagnostics());
+    }();
     gen_ = std::make_unique<GeneratorImpl>(program.get());
     return *gen_;
   }