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())});