mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 10:49:14 +00:00
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:
@@ -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()));
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user