Rename type Base methods
This CL renames StructBase and StructMemberBase to drop the Base suffix
now that the move is complete.
Bug: tint:1718
Change-Id: If8126e4993c58bb2de475c2b18695705082a0a92
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/113800
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
diff --git a/src/tint/program_builder.h b/src/tint/program_builder.h
index ff23562..81495f7 100644
--- a/src/tint/program_builder.h
+++ b/src/tint/program_builder.h
@@ -497,7 +497,7 @@
/// @returns the de-aliased array count pointer
template <typename T, typename... ARGS>
traits::EnableIf<traits::IsTypeOrDerived<T, type::ArrayCount> ||
- traits::IsTypeOrDerived<T, type::StructMemberBase>,
+ traits::IsTypeOrDerived<T, type::StructMember>,
T>*
create(ARGS&&... args) {
AssertNotMoved();
diff --git a/src/tint/resolver/const_eval.cc b/src/tint/resolver/const_eval.cc
index 8b020e2..da73215 100644
--- a/src/tint/resolver/const_eval.cc
+++ b/src/tint/resolver/const_eval.cc
@@ -416,7 +416,7 @@
utils::Vector<const sem::Constant*, 4> conv_els;
conv_els.Reserve(elements.Length());
std::function<const type::Type*(size_t idx)> target_el_ty;
- if (auto* str = target_ty->As<type::StructBase>()) {
+ if (auto* str = target_ty->As<type::Struct>()) {
if (str->Members().Length() != elements.Length()) {
TINT_ICE(Resolver, builder.Diagnostics())
<< "const-eval conversion of structure has mismatched element counts";
@@ -494,7 +494,7 @@
}
return nullptr;
},
- [&](const type::StructBase* s) -> const ImplConstant* {
+ [&](const type::Struct* s) -> const ImplConstant* {
utils::Hashmap<const type::Type*, const ImplConstant*, 8> zero_by_type;
utils::Vector<const sem::Constant*, 4> zeros;
zeros.Reserve(s->Members().Length());
@@ -1449,7 +1449,7 @@
}
ConstEval::Result ConstEval::MemberAccess(const sem::Expression* obj_expr,
- const type::StructMemberBase* member) {
+ const type::StructMember* member) {
auto obj_val = obj_expr->ConstantValue();
if (!obj_val) {
return nullptr;
diff --git a/src/tint/resolver/const_eval.h b/src/tint/resolver/const_eval.h
index f3d51b6..fa5c0ee 100644
--- a/src/tint/resolver/const_eval.h
+++ b/src/tint/resolver/const_eval.h
@@ -35,7 +35,7 @@
class Expression;
} // namespace tint::sem
namespace tint::type {
-class StructMemberBase;
+class StructMember;
} // namespace tint::type
namespace tint::resolver {
@@ -94,7 +94,7 @@
/// @param obj the object being accessed
/// @param member the member
/// @return the result of the member access, or null if the value cannot be calculated
- Result MemberAccess(const sem::Expression* obj, const type::StructMemberBase* member);
+ Result MemberAccess(const sem::Expression* obj, const type::StructMember* member);
/// @param ty the result type
/// @param vector the vector being swizzled
diff --git a/src/tint/sem/struct.h b/src/tint/sem/struct.h
index ac535ec..a05a96a 100644
--- a/src/tint/sem/struct.h
+++ b/src/tint/sem/struct.h
@@ -32,13 +32,13 @@
class StructMember;
} // namespace tint::sem
namespace tint::type {
-class StructMemberBase;
+class StructMember;
} // namespace tint::type
namespace tint::sem {
/// Struct holds the semantic information for structures.
-class Struct final : public Castable<Struct, type::StructBase> {
+class Struct final : public Castable<Struct, type::Struct> {
public:
/// Constructor
/// @param declaration the AST structure declaration
@@ -73,7 +73,7 @@
};
/// StructMember holds the semantic information for structure members.
-class StructMember final : public Castable<StructMember, type::StructMemberBase> {
+class StructMember final : public Castable<StructMember, type::StructMember> {
public:
/// Constructor
/// @param declaration the AST declaration node
diff --git a/src/tint/transform/promote_initializers_to_let.cc b/src/tint/transform/promote_initializers_to_let.cc
index 3b1ea7f..391a7f2 100644
--- a/src/tint/transform/promote_initializers_to_let.cc
+++ b/src/tint/transform/promote_initializers_to_let.cc
@@ -42,7 +42,7 @@
// Returns true if the expression should be hoisted to a new let statement before the
// expression's statement.
auto should_hoist = [&](const sem::Expression* expr) {
- if (!expr->Type()->IsAnyOf<type::Array, type::StructBase>()) {
+ if (!expr->Type()->IsAnyOf<type::Array, type::Struct>()) {
// We only care about array and struct initializers
return false;
}
diff --git a/src/tint/type/manager.h b/src/tint/type/manager.h
index 2e587c3..0515b14 100644
--- a/src/tint/type/manager.h
+++ b/src/tint/type/manager.h
@@ -91,7 +91,7 @@
/// pointer is returned.
template <typename TYPE,
typename _ = std::enable_if<traits::IsTypeOrDerived<TYPE, ArrayCount> ||
- traits::IsTypeOrDerived<TYPE, StructMemberBase>>,
+ traits::IsTypeOrDerived<TYPE, StructMember>>,
typename... ARGS>
TYPE* GetNode(ARGS&&... args) {
return nodes_.Get<TYPE>(std::forward<ARGS>(args)...);
@@ -119,8 +119,8 @@
size_t operator()(const tint::type::Node& type) const {
if (const auto* ac = type.As<tint::type::ArrayCount>()) {
return ac->Hash();
- } else if (type.Is<tint::type::StructMemberBase>()) {
- return tint::TypeInfo::Of<tint::type::StructMemberBase>().full_hashcode;
+ } else if (type.Is<tint::type::StructMember>()) {
+ return tint::TypeInfo::Of<tint::type::StructMember>().full_hashcode;
}
TINT_ASSERT(Type, false && "Unreachable");
return 0;
@@ -139,7 +139,7 @@
return ac->Equals(*bc);
}
return false;
- } else if (a.Is<tint::type::StructMemberBase>()) {
+ } else if (a.Is<tint::type::StructMember>()) {
return &a == &b;
}
TINT_ASSERT(Type, false && "Unreachable");
diff --git a/src/tint/type/struct.cc b/src/tint/type/struct.cc
index a72aa0f..e7b220d 100644
--- a/src/tint/type/struct.cc
+++ b/src/tint/type/struct.cc
@@ -22,13 +22,13 @@
#include "src/tint/symbol_table.h"
#include "src/tint/utils/hash.h"
-TINT_INSTANTIATE_TYPEINFO(tint::type::StructBase);
-TINT_INSTANTIATE_TYPEINFO(tint::type::StructMemberBase);
+TINT_INSTANTIATE_TYPEINFO(tint::type::Struct);
+TINT_INSTANTIATE_TYPEINFO(tint::type::StructMember);
namespace tint::type {
namespace {
-TypeFlags FlagsFrom(utils::VectorRef<const StructMemberBase*> members) {
+TypeFlags FlagsFrom(utils::VectorRef<const StructMember*> members) {
TypeFlags flags{
TypeFlag::kConstructable,
TypeFlag::kCreationFixedFootprint,
@@ -50,12 +50,12 @@
} // namespace
-StructBase::StructBase(tint::Source source,
- Symbol name,
- utils::VectorRef<const StructMemberBase*> members,
- uint32_t align,
- uint32_t size,
- uint32_t size_no_padding)
+Struct::Struct(tint::Source source,
+ Symbol name,
+ utils::VectorRef<const StructMember*> members,
+ uint32_t align,
+ uint32_t size,
+ uint32_t size_no_padding)
: Base(FlagsFrom(members)),
source_(source),
name_(name),
@@ -64,20 +64,20 @@
size_(size),
size_no_padding_(size_no_padding) {}
-StructBase::~StructBase() = default;
+Struct::~Struct() = default;
-size_t StructBase::Hash() const {
- return utils::Hash(TypeInfo::Of<StructBase>().full_hashcode, name_);
+size_t Struct::Hash() const {
+ return utils::Hash(TypeInfo::Of<Struct>().full_hashcode, name_);
}
-bool StructBase::Equals(const Type& other) const {
- if (auto* o = other.As<StructBase>()) {
+bool Struct::Equals(const Type& other) const {
+ if (auto* o = other.As<Struct>()) {
return o->name_ == name_;
}
return false;
}
-const StructMemberBase* StructBase::FindMember(Symbol name) const {
+const StructMember* Struct::FindMember(Symbol name) const {
for (auto* member : members_) {
if (member->Name() == name) {
return member;
@@ -86,22 +86,22 @@
return nullptr;
}
-uint32_t StructBase::Align() const {
+uint32_t Struct::Align() const {
return align_;
}
-uint32_t StructBase::Size() const {
+uint32_t Struct::Size() const {
return size_;
}
-std::string StructBase::FriendlyName(const SymbolTable& symbols) const {
+std::string Struct::FriendlyName(const SymbolTable& symbols) const {
return symbols.NameFor(name_);
}
-std::string StructBase::Layout(const tint::SymbolTable& symbols) const {
+std::string Struct::Layout(const tint::SymbolTable& symbols) const {
std::stringstream ss;
- auto member_name_of = [&](const StructMemberBase* sm) { return symbols.NameFor(sm->Name()); };
+ auto member_name_of = [&](const StructMember* sm) { return symbols.NameFor(sm->Name()); };
if (Members().IsEmpty()) {
return {};
@@ -164,14 +164,14 @@
return ss.str();
}
-StructMemberBase::StructMemberBase(tint::Source source,
- Symbol name,
- const type::Type* type,
- uint32_t index,
- uint32_t offset,
- uint32_t align,
- uint32_t size,
- std::optional<uint32_t> location)
+StructMember::StructMember(tint::Source source,
+ Symbol name,
+ const type::Type* type,
+ uint32_t index,
+ uint32_t offset,
+ uint32_t align,
+ uint32_t size,
+ std::optional<uint32_t> location)
: source_(source),
name_(name),
type_(type),
@@ -181,6 +181,6 @@
size_(size),
location_(location) {}
-StructMemberBase::~StructMemberBase() = default;
+StructMember::~StructMember() = default;
} // namespace tint::type
diff --git a/src/tint/type/struct.h b/src/tint/type/struct.h
index b9daec9..8946714 100644
--- a/src/tint/type/struct.h
+++ b/src/tint/type/struct.h
@@ -29,7 +29,7 @@
// Forward declarations
namespace tint::type {
-class StructMemberBase;
+class StructMember;
} // namespace tint::type
namespace tint::type {
@@ -44,8 +44,8 @@
kComputeOutput,
};
-/// StructBase holds the Type information for structures.
-class StructBase : public Castable<StructBase, Type> {
+/// Struct holds the Type information for structures.
+class Struct : public Castable<Struct, Type> {
public:
/// Constructor
/// @param source the source of the structure
@@ -55,15 +55,15 @@
/// @param size the byte size of the structure
/// @param size_no_padding size of the members without the end of structure
/// alignment padding
- StructBase(tint::Source source,
- Symbol name,
- utils::VectorRef<const StructMemberBase*> members,
- uint32_t align,
- uint32_t size,
- uint32_t size_no_padding);
+ Struct(tint::Source source,
+ Symbol name,
+ utils::VectorRef<const StructMember*> members,
+ uint32_t align,
+ uint32_t size,
+ uint32_t size_no_padding);
/// Destructor
- ~StructBase() override;
+ ~Struct() override;
/// @returns a hash of the type.
size_t Hash() const override;
@@ -79,11 +79,11 @@
Symbol Name() const { return name_; }
/// @returns the members of the structure
- utils::VectorRef<const StructMemberBase*> Members() const { return members_; }
+ utils::VectorRef<const StructMember*> Members() const { return members_; }
/// @param name the member name to look for
/// @returns the member with the given name, or nullptr if it was not found.
- const StructMemberBase* FindMember(Symbol name) const;
+ const StructMember* FindMember(Symbol name) const;
/// @returns the byte alignment of the structure
/// @note this may differ from the alignment of a structure member of this
@@ -145,29 +145,27 @@
std::string Layout(const tint::SymbolTable& symbols) const;
/// @param concrete the conversion-rank ordered concrete versions of this abstract structure.
- void SetConcreteTypes(utils::VectorRef<const StructBase*> concrete) {
- concrete_types_ = concrete;
- }
+ void SetConcreteTypes(utils::VectorRef<const Struct*> concrete) { concrete_types_ = concrete; }
/// @returns the conversion-rank ordered concrete versions of this abstract structure, or an
/// empty vector if this structure is not abstract.
/// @note only structures returned by builtins may be abstract (e.g. modf, frexp)
- utils::VectorRef<const StructBase*> ConcreteTypes() const { return concrete_types_; }
+ utils::VectorRef<const Struct*> ConcreteTypes() const { return concrete_types_; }
private:
const tint::Source source_;
const Symbol name_;
- const utils::Vector<const StructMemberBase*, 4> members_;
+ const utils::Vector<const StructMember*, 4> members_;
const uint32_t align_;
const uint32_t size_;
const uint32_t size_no_padding_;
std::unordered_set<ast::AddressSpace> address_space_usage_;
std::unordered_set<PipelineStageUsage> pipeline_stage_uses_;
- utils::Vector<const StructBase*, 2> concrete_types_;
+ utils::Vector<const Struct*, 2> concrete_types_;
};
-/// StructMemberBase holds the type information for structure members.
-class StructMemberBase : public Castable<StructMemberBase, Node> {
+/// StructMember holds the type information for structure members.
+class StructMember : public Castable<StructMember, Node> {
public:
/// Constructor
/// @param source the source of the struct member
@@ -178,17 +176,17 @@
/// @param align the byte alignment of the member
/// @param size the byte size of the member
/// @param location the location attribute, if present
- StructMemberBase(tint::Source source,
- Symbol name,
- const type::Type* type,
- uint32_t index,
- uint32_t offset,
- uint32_t align,
- uint32_t size,
- std::optional<uint32_t> location);
+ StructMember(tint::Source source,
+ Symbol name,
+ const type::Type* type,
+ uint32_t index,
+ uint32_t offset,
+ uint32_t align,
+ uint32_t size,
+ std::optional<uint32_t> location);
/// Destructor
- ~StructMemberBase() override;
+ ~StructMember() override;
/// @returns the source the struct member
const tint::Source& Source() const { return source_; }
@@ -198,10 +196,10 @@
/// Sets the owning structure to `s`
/// @param s the new structure owner
- void SetStruct(const StructBase* s) { struct_ = s; }
+ void SetStruct(const Struct* s) { struct_ = s; }
/// @returns the structure that owns this member
- const StructBase* Struct() const { return struct_; }
+ const type::Struct* Struct() const { return struct_; }
/// @returns the type of the member
const type::Type* Type() const { return type_; }
@@ -224,7 +222,7 @@
private:
const tint::Source source_;
const Symbol name_;
- const StructBase* struct_;
+ const type::Struct* struct_;
const type::Type* type_;
const uint32_t index_;
const uint32_t offset_;
diff --git a/src/tint/type/struct_test.cc b/src/tint/type/struct_test.cc
index 55e1517..ae9a249 100644
--- a/src/tint/type/struct_test.cc
+++ b/src/tint/type/struct_test.cc
@@ -24,27 +24,27 @@
TEST_F(TypeStructTest, Creation) {
auto name = Sym("S");
- auto* s = create<StructBase>(Source{}, name, utils::Empty, 4u /* align */, 8u /* size */,
- 16u /* size_no_padding */);
+ auto* s = create<Struct>(Source{}, name, utils::Empty, 4u /* align */, 8u /* size */,
+ 16u /* size_no_padding */);
EXPECT_EQ(s->Align(), 4u);
EXPECT_EQ(s->Size(), 8u);
EXPECT_EQ(s->SizeNoPadding(), 16u);
}
TEST_F(TypeStructTest, Hash) {
- auto* a = create<StructBase>(Source{}, Sym("a"), utils::Empty, 4u /* align */, 4u /* size */,
- 4u /* size_no_padding */);
- auto* b = create<StructBase>(Source{}, Sym("b"), utils::Empty, 4u /* align */, 4u /* size */,
- 4u /* size_no_padding */);
+ auto* a = create<Struct>(Source{}, Sym("a"), utils::Empty, 4u /* align */, 4u /* size */,
+ 4u /* size_no_padding */);
+ auto* b = create<Struct>(Source{}, Sym("b"), utils::Empty, 4u /* align */, 4u /* size */,
+ 4u /* size_no_padding */);
EXPECT_NE(a->Hash(), b->Hash());
}
TEST_F(TypeStructTest, Equals) {
- auto* a = create<StructBase>(Source{}, Sym("a"), utils::Empty, 4u /* align */, 4u /* size */,
- 4u /* size_no_padding */);
- auto* b = create<StructBase>(Source{}, Sym("b"), utils::Empty, 4u /* align */, 4u /* size */,
- 4u /* size_no_padding */);
+ auto* a = create<Struct>(Source{}, Sym("a"), utils::Empty, 4u /* align */, 4u /* size */,
+ 4u /* size_no_padding */);
+ auto* b = create<Struct>(Source{}, Sym("b"), utils::Empty, 4u /* align */, 4u /* size */,
+ 4u /* size_no_padding */);
EXPECT_TRUE(a->Equals(*a));
EXPECT_FALSE(a->Equals(*b));
@@ -53,8 +53,8 @@
TEST_F(TypeStructTest, FriendlyName) {
auto name = Sym("my_struct");
- auto* s = create<StructBase>(Source{}, name, utils::Empty, 4u /* align */, 4u /* size */,
- 4u /* size_no_padding */);
+ auto* s = create<Struct>(Source{}, name, utils::Empty, 4u /* align */, 4u /* size */,
+ 4u /* size_no_padding */);
EXPECT_EQ(s->FriendlyName(Symbols()), "my_struct");
}
diff --git a/src/tint/type/type.cc b/src/tint/type/type.cc
index 1eead35..7241782 100644
--- a/src/tint/type/type.cc
+++ b/src/tint/type/type.cc
@@ -180,7 +180,7 @@
[&](const Vector* v) { return v->type()->HoldsAbstract(); },
[&](const Matrix* m) { return m->type()->HoldsAbstract(); },
[&](const Array* a) { return a->ElemType()->HoldsAbstract(); },
- [&](const StructBase* s) {
+ [&](const Struct* s) {
for (auto* m : s->Members()) {
if (m->Type()->HoldsAbstract()) {
return true;
@@ -238,7 +238,7 @@
}
return kNoConversion;
},
- [&](const StructBase* from_str) {
+ [&](const Struct* from_str) {
auto concrete_tys = from_str->ConcreteTypes();
for (size_t i = 0; i < concrete_tys.Length(); i++) {
if (concrete_tys[i] == to) {
diff --git a/src/tint/type/type_test.cc b/src/tint/type/type_test.cc
index 133f521..48b44dd 100644
--- a/src/tint/type/type_test.cc
+++ b/src/tint/type/type_test.cc
@@ -45,54 +45,54 @@
const Matrix* mat4x3_af = create<Matrix>(vec3_af, 4u);
const Reference* ref_u32 =
create<Reference>(u32, ast::AddressSpace::kPrivate, ast::Access::kReadWrite);
- const StructBase* str_f32 = create<StructBase>(Source{},
- Sym("str_f32"),
- utils::Vector{
- create<StructMemberBase>(
- /* source */ Source{},
- /* name */ Sym("x"),
- /* type */ f32,
- /* index */ 0u,
- /* offset */ 0u,
- /* align */ 4u,
- /* size */ 4u,
- /* location */ std::nullopt),
- },
- /* align*/ 4u,
- /* size*/ 4u,
- /* size_no_padding*/ 4u);
- const StructBase* str_f16 = create<StructBase>(Source{},
- Sym("str_f16"),
- utils::Vector{
- create<StructMemberBase>(
- /* source */ Source{},
- /* name */ Sym("x"),
- /* type */ f16,
- /* index */ 0u,
- /* offset */ 0u,
- /* align */ 4u,
- /* size */ 4u,
- /* location */ std::nullopt),
- },
- /* align*/ 4u,
- /* size*/ 4u,
- /* size_no_padding*/ 4u);
- StructBase* str_af = create<StructBase>(Source{},
- Sym("str_af"),
- utils::Vector{
- create<StructMemberBase>(
- /* source */ Source{},
- /* name */ Sym("x"),
- /* type */ af,
- /* index */ 0u,
- /* offset */ 0u,
- /* align */ 4u,
- /* size */ 4u,
- /* location */ std::nullopt),
- },
- /* align*/ 4u,
- /* size*/ 4u,
- /* size_no_padding*/ 4u);
+ const Struct* str_f32 = create<Struct>(Source{},
+ Sym("str_f32"),
+ utils::Vector{
+ create<StructMember>(
+ /* source */ Source{},
+ /* name */ Sym("x"),
+ /* type */ f32,
+ /* index */ 0u,
+ /* offset */ 0u,
+ /* align */ 4u,
+ /* size */ 4u,
+ /* location */ std::nullopt),
+ },
+ /* align*/ 4u,
+ /* size*/ 4u,
+ /* size_no_padding*/ 4u);
+ const Struct* str_f16 = create<Struct>(Source{},
+ Sym("str_f16"),
+ utils::Vector{
+ create<StructMember>(
+ /* source */ Source{},
+ /* name */ Sym("x"),
+ /* type */ f16,
+ /* index */ 0u,
+ /* offset */ 0u,
+ /* align */ 4u,
+ /* size */ 4u,
+ /* location */ std::nullopt),
+ },
+ /* align*/ 4u,
+ /* size*/ 4u,
+ /* size_no_padding*/ 4u);
+ Struct* str_af = create<Struct>(Source{},
+ Sym("str_af"),
+ utils::Vector{
+ create<StructMember>(
+ /* source */ Source{},
+ /* name */ Sym("x"),
+ /* type */ af,
+ /* index */ 0u,
+ /* offset */ 0u,
+ /* align */ 4u,
+ /* size */ 4u,
+ /* location */ std::nullopt),
+ },
+ /* align*/ 4u,
+ /* size*/ 4u,
+ /* size_no_padding*/ 4u);
const Array* arr_i32 = create<Array>(
/* element */ i32,
/* count */ create<ConstantArrayCount>(5u),