Replace Type::(Is|As)Struct with Castable

Change-Id: I0bc5645d65d7b53058bda7b343a991a9614741be
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34271
Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
Ben Clayton
2020-11-30 23:30:58 +00:00
parent 351128a41e
commit d734dd0c10
35 changed files with 116 additions and 123 deletions

View File

@@ -1381,8 +1381,8 @@ ast::Expression* ParserImpl::MakeNullValue(ast::type::Type* type) {
return create<ast::TypeConstructorExpression>(original_type,
std::move(ast_components));
}
if (type->IsStruct()) {
auto* struct_ty = type->AsStruct();
if (type->Is<ast::type::StructType>()) {
auto* struct_ty = type->As<ast::type::StructType>();
ast::ExpressionList ast_components;
for (auto* member : struct_ty->impl()->members()) {
ast_components.emplace_back(MakeNullValue(member->type()));

View File

@@ -570,9 +570,9 @@ TEST_F(SpvParserTest, ConvertType_StructTwoMembers) {
auto* type = p->ConvertType(10);
ASSERT_NE(type, nullptr);
EXPECT_TRUE(type->IsStruct());
EXPECT_TRUE(type->Is<ast::type::StructType>());
std::stringstream ss;
type->AsStruct()->impl()->to_str(ss, 0);
type->As<ast::type::StructType>()->impl()->to_str(ss, 0);
EXPECT_THAT(ss.str(), Eq(R"(Struct{
StructMember{field0: __u32}
StructMember{field1: __f32}
@@ -591,9 +591,9 @@ TEST_F(SpvParserTest, ConvertType_StructWithBlockDecoration) {
auto* type = p->ConvertType(10);
ASSERT_NE(type, nullptr);
EXPECT_TRUE(type->IsStruct());
EXPECT_TRUE(type->Is<ast::type::StructType>());
std::stringstream ss;
type->AsStruct()->impl()->to_str(ss, 0);
type->As<ast::type::StructType>()->impl()->to_str(ss, 0);
EXPECT_THAT(ss.str(), Eq(R"(Struct{
[[block]]
StructMember{field0: __u32}
@@ -616,9 +616,9 @@ TEST_F(SpvParserTest, ConvertType_StructWithMemberDecorations) {
auto* type = p->ConvertType(10);
ASSERT_NE(type, nullptr);
EXPECT_TRUE(type->IsStruct());
EXPECT_TRUE(type->Is<ast::type::StructType>());
std::stringstream ss;
type->AsStruct()->impl()->to_str(ss, 0);
type->As<ast::type::StructType>()->impl()->to_str(ss, 0);
EXPECT_THAT(ss.str(), Eq(R"(Struct{
StructMember{[[ offset 0 ]] field0: __f32}
StructMember{[[ offset 8 ]] field1: __vec_2__f32}

View File

@@ -318,7 +318,7 @@ Expect<bool> ParserImpl::expect_global_decl() {
return Failure::kErrored;
auto* type = module_.unique_type(std::move(str.value));
register_constructed(type->AsStruct()->name(), type);
register_constructed(type->As<ast::type::StructType>()->name(), type);
module_.AddConstructedType(type);
return true;
}

View File

@@ -46,6 +46,7 @@
#include "src/ast/type/storage_texture_type.h"
#include "src/ast/type/texture_type.h"
#include "src/ast/type/type.h"
#include "src/ast/type/struct_type.h"
#include "src/ast/variable.h"
#include "src/ast/variable_decoration.h"
#include "src/context.h"

View File

@@ -103,8 +103,8 @@ type B = A;)");
auto& m = p->get_module();
ASSERT_EQ(m.constructed_types().size(), 2u);
ASSERT_TRUE(m.constructed_types()[0]->IsStruct());
auto* str = m.constructed_types()[0]->AsStruct();
ASSERT_TRUE(m.constructed_types()[0]->Is<ast::type::StructType>());
auto* str = m.constructed_types()[0]->As<ast::type::StructType>();
EXPECT_EQ(str->name(), "A");
ASSERT_TRUE(m.constructed_types()[1]->Is<ast::type::AliasType>());
@@ -164,9 +164,9 @@ TEST_F(ParserImplTest, GlobalDecl_ParsesStruct) {
auto* t = m.constructed_types()[0];
ASSERT_NE(t, nullptr);
ASSERT_TRUE(t->IsStruct());
ASSERT_TRUE(t->Is<ast::type::StructType>());
auto* str = t->AsStruct();
auto* str = t->As<ast::type::StructType>();
EXPECT_EQ(str->name(), "A");
EXPECT_EQ(str->impl()->members().size(), 2u);
}
@@ -183,9 +183,9 @@ TEST_F(ParserImplTest, GlobalDecl_Struct_WithStride) {
auto* t = m.constructed_types()[0];
ASSERT_NE(t, nullptr);
ASSERT_TRUE(t->IsStruct());
ASSERT_TRUE(t->Is<ast::type::StructType>());
auto* str = t->AsStruct();
auto* str = t->As<ast::type::StructType>();
EXPECT_EQ(str->name(), "A");
EXPECT_EQ(str->impl()->members().size(), 1u);
EXPECT_FALSE(str->IsBlockDecorated());
@@ -207,9 +207,9 @@ TEST_F(ParserImplTest, GlobalDecl_Struct_WithDecoration) {
auto* t = m.constructed_types()[0];
ASSERT_NE(t, nullptr);
ASSERT_TRUE(t->IsStruct());
ASSERT_TRUE(t->Is<ast::type::StructType>());
auto* str = t->AsStruct();
auto* str = t->As<ast::type::StructType>();
EXPECT_EQ(str->name(), "A");
EXPECT_EQ(str->impl()->members().size(), 1u);
EXPECT_TRUE(str->IsBlockDecorated());

View File

@@ -56,9 +56,9 @@ TEST_F(ParserImplTest, TypeDecl_ParsesStruct_Ident) {
ASSERT_TRUE(t->Is<ast::type::AliasType>());
auto* alias = t->As<ast::type::AliasType>();
EXPECT_EQ(alias->name(), "a");
ASSERT_TRUE(alias->type()->IsStruct());
ASSERT_TRUE(alias->type()->Is<ast::type::StructType>());
auto* s = alias->type()->AsStruct();
auto* s = alias->type()->As<ast::type::StructType>();
EXPECT_EQ(s->name(), "B");
}