validation: Allow storage atomics without structs

Fixed: tint:1409
Change-Id: I169fe23ff697e5c997742caba8a37a54867cd3f6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/85526
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/resolver/atomics_validation_test.cc b/src/tint/resolver/atomics_validation_test.cc
index dad3559..c241da1 100644
--- a/src/tint/resolver/atomics_validation_test.cc
+++ b/src/tint/resolver/atomics_validation_test.cc
@@ -34,6 +34,14 @@
 }
 
 TEST_F(ResolverAtomicValidationTest, StorageClass_Storage) {
+  Global("g", ty.atomic(Source{{12, 34}}, ty.i32()),
+         ast::StorageClass::kStorage, ast::Access::kReadWrite,
+         GroupAndBinding(0, 0));
+
+  EXPECT_TRUE(r()->Resolve()) << r()->error();
+}
+
+TEST_F(ResolverAtomicValidationTest, StorageClass_Storage_Struct) {
   auto* s =
       Structure("s", {Member("a", ty.atomic(Source{{12, 34}}, ty.i32()))});
   Global("g", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kReadWrite,
diff --git a/src/tint/resolver/resolver_validation.cc b/src/tint/resolver/resolver_validation.cc
index 57cfb47..02ec786 100644
--- a/src/tint/resolver/resolver_validation.cc
+++ b/src/tint/resolver/resolver_validation.cc
@@ -517,7 +517,8 @@
   auto source = decl->type ? decl->type->source : decl->source;
 
   if (type->Is<sem::Atomic>()) {
-    if (sc != ast::StorageClass::kWorkgroup) {
+    if (sc != ast::StorageClass::kWorkgroup &&
+        sc != ast::StorageClass::kStorage) {
       AddError(
           "atomic variables must have <storage> or <workgroup> storage class",
           source);