[tint][ir] Handle requires directives
Just ignore them.
Bug: tint:2088
Change-Id: Ib9a49d758da9890081f77403b8e60a56ebb6bb10
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/158628
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
index cf38225..a0c10a8 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
@@ -86,6 +86,7 @@
#include "src/tint/lang/wgsl/ast/member_accessor_expression.h"
#include "src/tint/lang/wgsl/ast/override.h"
#include "src/tint/lang/wgsl/ast/phony_expression.h"
+#include "src/tint/lang/wgsl/ast/requires.h"
#include "src/tint/lang/wgsl/ast/return_statement.h"
#include "src/tint/lang/wgsl/ast/statement.h"
#include "src/tint/lang/wgsl/ast/struct.h"
@@ -259,6 +260,9 @@
[&](const ast::DiagnosticDirective*) {
// Ignored for now.
}, //
+ [&](const ast::Requires*) {
+ // Ignored for now.
+ }, //
TINT_ICE_ON_NO_MATCH);
}
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir_test.cc
index 19d448b..f704fa5 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir_test.cc
@@ -1142,5 +1142,27 @@
)");
}
+TEST_F(IR_FromProgramTest, Requires) {
+ Require(wgsl::LanguageFeature::kReadonlyAndReadwriteStorageTextures);
+ Func("f", tint::Empty, ty.void_(), tint::Empty);
+
+ auto m = Build();
+ ASSERT_TRUE(m) << m;
+
+ ASSERT_EQ(1u, m->functions.Length());
+
+ auto* f = m->functions[0];
+ ASSERT_NE(f->Block(), nullptr);
+
+ EXPECT_EQ(m->functions[0]->Stage(), core::ir::Function::PipelineStage::kUndefined);
+
+ EXPECT_EQ(Disassemble(m.Get()), R"(%f = func():void -> %b1 {
+ %b1 = block {
+ ret
+ }
+}
+)");
+}
+
} // namespace
} // namespace tint::wgsl::reader