tint/reader/wgsl: Lex 'const'
The parser doesn't consume this yet.
Bug: tint:1580
Change-Id: I3e78a7fdd1bd6b2a4fb4b52379a8ccc9a05869a3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/94325
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
diff --git a/src/tint/reader/wgsl/lexer.cc b/src/tint/reader/wgsl/lexer.cc
index 716075e..a3eaa6d 100644
--- a/src/tint/reader/wgsl/lexer.cc
+++ b/src/tint/reader/wgsl/lexer.cc
@@ -1088,6 +1088,9 @@
if (str == "case") {
return {Token::Type::kCase, source, "case"};
}
+ if (str == "const") {
+ return {Token::Type::kConst, source, "const"};
+ }
if (str == "continue") {
return {Token::Type::kContinue, source, "continue"};
}
diff --git a/src/tint/reader/wgsl/lexer_test.cc b/src/tint/reader/wgsl/lexer_test.cc
index ab4ec7e..712474f 100644
--- a/src/tint/reader/wgsl/lexer_test.cc
+++ b/src/tint/reader/wgsl/lexer_test.cc
@@ -930,6 +930,7 @@
TokenData{"bool", Token::Type::kBool},
TokenData{"break", Token::Type::kBreak},
TokenData{"case", Token::Type::kCase},
+ TokenData{"const", Token::Type::kConst},
TokenData{"continue", Token::Type::kContinue},
TokenData{"continuing", Token::Type::kContinuing},
TokenData{"default", Token::Type::kDefault},
diff --git a/src/tint/reader/wgsl/parser_impl.cc b/src/tint/reader/wgsl/parser_impl.cc
index 854b276..3f1fad4 100644
--- a/src/tint/reader/wgsl/parser_impl.cc
+++ b/src/tint/reader/wgsl/parser_impl.cc
@@ -124,10 +124,10 @@
// https://gpuweb.github.io/gpuweb/wgsl.html#reserved-keywords
bool is_reserved(Token t) {
- return t == "asm" || t == "bf16" || t == "const" || t == "do" || t == "enum" || t == "f64" ||
- t == "handle" || t == "i8" || t == "i16" || t == "i64" || t == "mat" ||
- t == "premerge" || t == "regardless" || t == "typedef" || t == "u8" || t == "u16" ||
- t == "u64" || t == "unless" || t == "using" || t == "vec" || t == "void" || t == "while";
+ return t == "asm" || t == "bf16" || t == "do" || t == "enum" || t == "f64" || t == "handle" ||
+ t == "i8" || t == "i16" || t == "i64" || t == "mat" || t == "premerge" ||
+ t == "regardless" || t == "typedef" || t == "u8" || t == "u16" || t == "u64" ||
+ t == "unless" || t == "using" || t == "vec" || t == "void" || t == "while";
}
/// Enter-exit counters for block token types.
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 8da2771..8f2d470 100644
--- a/src/tint/reader/wgsl/parser_impl_reserved_keyword_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_reserved_keyword_test.cc
@@ -85,7 +85,6 @@
ParserImplReservedKeywordTest,
testing::Values("asm",
"bf16",
- "const",
"do",
"enum",
"f64",
diff --git a/src/tint/reader/wgsl/token.cc b/src/tint/reader/wgsl/token.cc
index aec1c9a..c6a06c9 100644
--- a/src/tint/reader/wgsl/token.cc
+++ b/src/tint/reader/wgsl/token.cc
@@ -141,6 +141,8 @@
return "break";
case Token::Type::kCase:
return "case";
+ case Token::Type::kConst:
+ return "const";
case Token::Type::kContinue:
return "continue";
case Token::Type::kContinuing:
diff --git a/src/tint/reader/wgsl/token.h b/src/tint/reader/wgsl/token.h
index 2fcf742..e291f8e 100644
--- a/src/tint/reader/wgsl/token.h
+++ b/src/tint/reader/wgsl/token.h
@@ -151,6 +151,8 @@
kBreak,
/// A 'case'
kCase,
+ /// A 'const'
+ kConst,
/// A 'continue'
kContinue,
/// A 'continuing'