[wgsl][reader]: reserve 'noncoherent' and 'non_coherent'

Fixed: 367740670
Change-Id: I8f40aef24fa9d4db84bb10ca133ccfedc5bb9bed
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/207176
Auto-Submit: David Neto <dneto@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/spirv/reader/ast_parser/namer.cc b/src/tint/lang/spirv/reader/ast_parser/namer.cc
index 2482b4d..4022d6a 100644
--- a/src/tint/lang/spirv/reader/ast_parser/namer.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/namer.cc
@@ -38,6 +38,8 @@
 
 namespace {
 
+// The reserved words in WGSL.
+// TODO(crbug.com/368114894) update this list to match the WGSL spec.
 const char* kWGSLReservedWords[] = {
     // Please keep this list sorted
     "array",
@@ -113,6 +115,8 @@
     "mat4x4",
     "mat4x4f",
     "mat4x4h",
+    "non_coherent",
+    "noncoherent",
     "num_workgroups",
     "offset",
     "out",
diff --git a/src/tint/lang/wgsl/ast/transform/renamer.cc b/src/tint/lang/wgsl/ast/transform/renamer.cc
index 25485b2..4baf791 100644
--- a/src/tint/lang/wgsl/ast/transform/renamer.cc
+++ b/src/tint/lang/wgsl/ast/transform/renamer.cc
@@ -274,6 +274,8 @@
     "modf",
     "namespace",
     "noinline",
+    "non_coherent",
+    "noncoherent",
     "noperspective",
     "normalize",
     "not",
diff --git a/src/tint/lang/wgsl/ast/transform/renamer_test.cc b/src/tint/lang/wgsl/ast/transform/renamer_test.cc
index 6912b2e..3d1730c 100644
--- a/src/tint/lang/wgsl/ast/transform/renamer_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/renamer_test.cc
@@ -738,7 +738,9 @@
                              // "mediump",  // Also reserved in WGSL
                              // "namespace",  // Also reserved in WGSL
                              // "noinline",  // Also reserved in WGSL
+                             // "noncoherent",  // Reserved in WGSL
                              // "noperspective",  // Also reserved in WGSL
+                             // "non_coherent",  // Reserved in WGSL
                              "out",
                              "output",
                              // "partition",  // Also reserved in WGSL
diff --git a/src/tint/lang/wgsl/reader/parser/parser.cc b/src/tint/lang/wgsl/reader/parser/parser.cc
index 2af3224..c3f72f6 100644
--- a/src/tint/lang/wgsl/reader/parser/parser.cc
+++ b/src/tint/lang/wgsl/reader/parser/parser.cc
@@ -108,14 +108,14 @@
            s == "macro_rules" || s == "match" || s == "mediump" || s == "meta" || s == "mod" ||
            s == "module" || s == "move" || s == "mut" || s == "mutable" || s == "namespace" ||
            s == "new" || s == "nil" || s == "noexcept" || s == "noinline" ||
-           s == "nointerpolation" || s == "noperspective" || s == "null" || s == "nullptr" ||
-           s == "of" || s == "operator" || s == "package" || s == "packoffset" ||
-           s == "partition" || s == "pass" || s == "patch" || s == "pixelfragment" ||
-           s == "precise" || s == "precision" || s == "premerge" || s == "priv" ||
-           s == "protected" || s == "pub" || s == "public" || s == "readonly" || s == "ref" ||
-           s == "regardless" || s == "register" || s == "reinterpret_cast" || s == "require" ||
-           s == "resource" || s == "restrict" || s == "self" || s == "set" || s == "shared" ||
-           s == "sizeof" || s == "smooth" || s == "snorm" || s == "static" ||
+           s == "nointerpolation" || s == "non_coherent" || s == "noncoherent" ||
+           s == "noperspective" || s == "null" || s == "nullptr" || s == "of" || s == "operator" ||
+           s == "package" || s == "packoffset" || s == "partition" || s == "pass" || s == "patch" ||
+           s == "pixelfragment" || s == "precise" || s == "precision" || s == "premerge" ||
+           s == "priv" || s == "protected" || s == "pub" || s == "public" || s == "readonly" ||
+           s == "ref" || s == "regardless" || s == "register" || s == "reinterpret_cast" ||
+           s == "require" || s == "resource" || s == "restrict" || s == "self" || s == "set" ||
+           s == "shared" || s == "sizeof" || s == "smooth" || s == "snorm" || s == "static" ||
            s == "static_assert" || s == "static_cast" || s == "std" || s == "subroutine" ||
            s == "super" || s == "target" || s == "template" || s == "this" || s == "thread_local" ||
            s == "throw" || s == "trait" || s == "try" || s == "type" || s == "typedef" ||
diff --git a/src/tint/lang/wgsl/reader/parser/reserved_keyword_test.cc b/src/tint/lang/wgsl/reader/parser/reserved_keyword_test.cc
index 2a18d42..6c63ae1 100644
--- a/src/tint/lang/wgsl/reader/parser/reserved_keyword_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/reserved_keyword_test.cc
@@ -177,6 +177,8 @@
                                          "noexcept",
                                          "noinline",
                                          "nointerpolation",
+                                         "non_coherent",
+                                         "noncoherent",
                                          "noperspective",
                                          "null",
                                          "nullptr",