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_;
}