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>
This commit is contained in:
parent
e6c7fd7110
commit
12f2f9b1bc
|
@ -34,6 +34,14 @@ TEST_F(ResolverAtomicValidationTest, StorageClass_WorkGroup) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ResolverAtomicValidationTest, StorageClass_Storage) {
|
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 =
|
auto* s =
|
||||||
Structure("s", {Member("a", ty.atomic(Source{{12, 34}}, ty.i32()))});
|
Structure("s", {Member("a", ty.atomic(Source{{12, 34}}, ty.i32()))});
|
||||||
Global("g", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kReadWrite,
|
Global("g", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kReadWrite,
|
||||||
|
|
|
@ -517,7 +517,8 @@ bool Resolver::ValidateAtomicVariable(const sem::Variable* var) {
|
||||||
auto source = decl->type ? decl->type->source : decl->source;
|
auto source = decl->type ? decl->type->source : decl->source;
|
||||||
|
|
||||||
if (type->Is<sem::Atomic>()) {
|
if (type->Is<sem::Atomic>()) {
|
||||||
if (sc != ast::StorageClass::kWorkgroup) {
|
if (sc != ast::StorageClass::kWorkgroup &&
|
||||||
|
sc != ast::StorageClass::kStorage) {
|
||||||
AddError(
|
AddError(
|
||||||
"atomic variables must have <storage> or <workgroup> storage class",
|
"atomic variables must have <storage> or <workgroup> storage class",
|
||||||
source);
|
source);
|
||||||
|
|
Loading…
Reference in New Issue