Update message when indexing a scalar.
This CL updates the member accessor error message when accessing a
scalar to be easier to understand.
Bug: tint:1201
Change-Id: I40611bf8769eba1f98a6f13ca9a1c11d65d35396
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/172641
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/wgsl/resolver/array_accessor_test.cc b/src/tint/lang/wgsl/resolver/array_accessor_test.cc
index 937568d..b3e98ed 100644
--- a/src/tint/lang/wgsl/resolver/array_accessor_test.cc
+++ b/src/tint/lang/wgsl/resolver/array_accessor_test.cc
@@ -27,9 +27,8 @@
#include "src/tint/lang/wgsl/resolver/resolver.h"
-#include "gmock/gmock.h"
+#include "gtest/gtest.h"
#include "src/tint/lang/core/fluent_types.h"
-#include "src/tint/lang/core/type/reference.h"
#include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
diff --git a/src/tint/lang/wgsl/resolver/resolver.cc b/src/tint/lang/wgsl/resolver/resolver.cc
index 4595afa..76b9ff9 100644
--- a/src/tint/lang/wgsl/resolver/resolver.cc
+++ b/src/tint/lang/wgsl/resolver/resolver.cc
@@ -3584,9 +3584,8 @@
},
[&](Default) {
- AddError("invalid member accessor expression. Expected vector or struct, got '" +
- sem_.TypeNameOf(storage_ty) + "'",
- expr->member->source);
+ AddError("cannot index into expression of type '" + sem_.TypeNameOf(storage_ty) + "'",
+ expr->object->source);
return nullptr;
});
}
diff --git a/src/tint/lang/wgsl/resolver/resolver_test.cc b/src/tint/lang/wgsl/resolver/resolver_test.cc
index fe4027e..ad94a6f 100644
--- a/src/tint/lang/wgsl/resolver/resolver_test.cc
+++ b/src/tint/lang/wgsl/resolver/resolver_test.cc
@@ -1242,6 +1242,15 @@
12:34 note: are you missing '()'?)");
}
+TEST_F(ResolverTest, Expr_MemberAccessor_NonCompoundType) {
+ GlobalConst("depth", ty.i32(), Expr(3_i));
+ auto* mem = MemberAccessor(Ident(Source{{12, 34}}, "depth"), "x");
+ WrapInFunction(mem);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(), R"(12:34 error: cannot index into expression of type 'i32')");
+}
+
TEST_F(ResolverTest, Expr_MemberAccessor_Struct) {
auto* st =
Structure("S", Vector{Member("first_member", ty.i32()), Member("second_member", ty.f32())});