Make case selectors an integer value
Change-Id: I819983701ed6cca4eba1a05b4edc5fdff10fa88d
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/22542
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index 038e397..89edc77 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -1856,13 +1856,19 @@
ast::CaseSelectorList selectors;
for (;;) {
+ auto t = peek();
auto cond = const_literal();
if (has_error())
return {};
if (cond == nullptr)
break;
+ if (!cond->IsInt()) {
+ set_error(t, "invalid case selector must be an integer value");
+ return {};
+ }
- selectors.push_back(std::move(cond));
+ std::unique_ptr<ast::IntLiteral> selector(cond.release()->AsInt());
+ selectors.push_back(std::move(selector));
}
return selectors;