Add symbol to member name.

This CL adds the symbol to the struct member. The name will eventually
be removed when the symbol is used everywhere.

Change-Id: Ie97f61509804992b44b22396773a635efbc4458e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/35780
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Auto-Submit: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
dan sinclair
2020-12-15 16:43:18 +00:00
committed by Commit Bot service account
parent be96376d8e
commit 36e22f0f3b
36 changed files with 495 additions and 320 deletions

View File

@@ -940,9 +940,9 @@ ast::type::Type* ParserImpl::ConvertType(
++num_non_writable_members;
}
const auto member_name = namer_.GetMemberName(type_id, member_index);
auto* ast_struct_member =
create<ast::StructMember>(Source{}, member_name, ast_member_ty,
std::move(ast_member_decorations));
auto* ast_struct_member = create<ast::StructMember>(
Source{}, ast_module_.RegisterSymbol(member_name), member_name,
ast_member_ty, std::move(ast_member_decorations));
ast_members.push_back(ast_struct_member);
}

View File

@@ -566,7 +566,7 @@ TEST_F(SpvParserTest, ConvertType_StructTwoMembers) {
EXPECT_TRUE(type->Is<ast::type::Struct>());
std::stringstream ss;
type->As<ast::type::Struct>()->impl()->to_str(ss, 0);
EXPECT_THAT(ss.str(), Eq(R"(Struct{
EXPECT_THAT(Demangler().Demangle(p->get_module(), ss.str()), Eq(R"(Struct{
StructMember{field0: __u32}
StructMember{field1: __f32}
}
@@ -587,7 +587,7 @@ TEST_F(SpvParserTest, ConvertType_StructWithBlockDecoration) {
EXPECT_TRUE(type->Is<ast::type::Struct>());
std::stringstream ss;
type->As<ast::type::Struct>()->impl()->to_str(ss, 0);
EXPECT_THAT(ss.str(), Eq(R"(Struct{
EXPECT_THAT(Demangler().Demangle(p->get_module(), ss.str()), Eq(R"(Struct{
[[block]]
StructMember{field0: __u32}
}
@@ -612,7 +612,7 @@ TEST_F(SpvParserTest, ConvertType_StructWithMemberDecorations) {
EXPECT_TRUE(type->Is<ast::type::Struct>());
std::stringstream ss;
type->As<ast::type::Struct>()->impl()->to_str(ss, 0);
EXPECT_THAT(ss.str(), Eq(R"(Struct{
EXPECT_THAT(Demangler().Demangle(p->get_module(), ss.str()), Eq(R"(Struct{
StructMember{[[ offset 0 ]] field0: __f32}
StructMember{[[ offset 8 ]] field1: __vec_2__f32}
StructMember{[[ offset 16 ]] field2: __mat_2_2__f32}

View File

@@ -22,6 +22,7 @@
#include "src/ast/type/matrix_type.h"
#include "src/ast/type/struct_type.h"
#include "src/ast/type/vector_type.h"
#include "src/demangler.h"
#include "src/reader/spirv/parser_impl.h"
#include "src/reader/spirv/parser_impl_test_helper.h"
#include "src/reader/spirv/spirv_tools_helpers_test.h"
@@ -59,7 +60,8 @@ TEST_F(SpvParserTest, NamedTypes_Dup_EmitBoth) {
%s2 = OpTypeStruct %uint %uint
)"));
EXPECT_TRUE(p->BuildAndParseInternalModule()) << p->error();
EXPECT_THAT(p->module().to_str(), HasSubstr(R"(S Struct{
EXPECT_THAT(Demangler().Demangle(p->get_module(), p->get_module().to_str()),
HasSubstr(R"(S Struct{
StructMember{field0: __u32}
StructMember{field1: __u32}
}

View File

@@ -1246,8 +1246,9 @@ Expect<ast::StructMember*> ParserImpl::expect_struct_member(
if (!expect("struct member", Token::Type::kSemicolon))
return Failure::kErrored;
return create<ast::StructMember>(decl->source, decl->name, decl->type,
std::move(member_decos.value));
return create<ast::StructMember>(
decl->source, module_.RegisterSymbol(decl->name), decl->name, decl->type,
std::move(member_decos.value));
}
// function_decl

View File

@@ -87,7 +87,8 @@ TEST_F(ParserImplTest, VariableIdentDecl_ParsesWithAccessDeco_Read) {
auto p = parser("my_var : [[access(read)]] S");
ast::StructMember mem(Source{}, "a", &i32, ast::StructMemberDecorationList{});
ast::StructMember mem(Source{}, p->get_module().RegisterSymbol("a"), "a",
&i32, ast::StructMemberDecorationList{});
ast::StructMemberList members;
members.push_back(&mem);
@@ -114,7 +115,8 @@ TEST_F(ParserImplTest, VariableIdentDecl_ParsesWithAccessDeco_ReadWrite) {
auto p = parser("my_var : [[access(read_write)]] S");
ast::StructMember mem(Source{}, "a", &i32, ast::StructMemberDecorationList{});
ast::StructMember mem(Source{}, p->get_module().RegisterSymbol("a"), "a",
&i32, ast::StructMemberDecorationList{});
ast::StructMemberList members;
members.push_back(&mem);
@@ -141,7 +143,8 @@ TEST_F(ParserImplTest, VariableIdentDecl_MultipleAccessDecoFail) {
auto p = parser("my_var : [[access(read), access(read_write)]] S");
ast::StructMember mem(Source{}, "a", &i32, ast::StructMemberDecorationList{});
ast::StructMember mem(Source{}, p->get_module().RegisterSymbol("a"), "a",
&i32, ast::StructMemberDecorationList{});
ast::StructMemberList members;
members.push_back(&mem);
@@ -165,7 +168,8 @@ TEST_F(ParserImplTest, VariableIdentDecl_MultipleAccessDeco_MultiBlock_Fail) {
auto p = parser("my_var : [[access(read)]][[access(read_write)]] S");
ast::StructMember mem(Source{}, "a", &i32, ast::StructMemberDecorationList{});
ast::StructMember mem(Source{}, p->get_module().RegisterSymbol("a"), "a",
&i32, ast::StructMemberDecorationList{});
ast::StructMemberList members;
members.push_back(&mem);
@@ -205,7 +209,8 @@ TEST_F(ParserImplTest, VariableIdentDecl_NonAccessDecoFail) {
auto p = parser("my_var : [[stride(1)]] S");
ast::StructMember mem(Source{}, "a", &i32, ast::StructMemberDecorationList{});
ast::StructMember mem(Source{}, p->get_module().RegisterSymbol("a"), "a",
&i32, ast::StructMemberDecorationList{});
ast::StructMemberList members;
members.push_back(&mem);