ast: Remove non-group DecorationKind enums

The following DecorationKinds were sub-types of core decoration types:

  kStride, kStage, kWorkgroup, kStructMemberOffset, kAccess, kBinding, kBuiltin, kConstantId, kLocation

These only existed for casting (not for error messages), and are no longer needed, so remove them.

Change-Id: I1e4bb9bf51952c6e86bac984d0d667a071ca80bf
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34303
Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
Ben Clayton 2020-11-30 23:30:58 +00:00
parent 370d20a4c6
commit 26e944bc4e
21 changed files with 9 additions and 146 deletions

View File

@ -17,17 +17,11 @@
namespace tint {
namespace ast {
constexpr const DecorationKind AccessDecoration::Kind;
AccessDecoration::AccessDecoration(AccessControl val, const Source& source)
: Base(source), value_(val) {}
AccessDecoration::~AccessDecoration() = default;
DecorationKind AccessDecoration::GetKind() const {
return Kind;
}
bool AccessDecoration::IsAccess() const {
return true;
}

View File

@ -26,18 +26,12 @@ namespace ast {
/// An access decoration
class AccessDecoration : public Castable<AccessDecoration, TypeDecoration> {
public:
/// The kind of decoration that this type represents
static constexpr const DecorationKind Kind = DecorationKind::kAccess;
/// constructor
/// @param value the access value
/// @param source the source of this decoration
explicit AccessDecoration(AccessControl value, const Source& source);
~AccessDecoration() override;
/// @return the decoration kind
DecorationKind GetKind() const override;
/// @returns true if this is an access decoration
bool IsAccess() const override;

View File

@ -17,17 +17,11 @@
namespace tint {
namespace ast {
constexpr const DecorationKind BindingDecoration::Kind;
BindingDecoration::BindingDecoration(uint32_t val, const Source& source)
: Base(source), value_(val) {}
BindingDecoration::~BindingDecoration() = default;
DecorationKind BindingDecoration::GetKind() const {
return Kind;
}
bool BindingDecoration::IsBinding() const {
return true;
}

View File

@ -26,18 +26,12 @@ namespace ast {
class BindingDecoration
: public Castable<BindingDecoration, VariableDecoration> {
public:
/// The kind of decoration that this type represents
static constexpr const DecorationKind Kind = DecorationKind::kBinding;
/// constructor
/// @param value the binding value
/// @param source the source of this decoration
BindingDecoration(uint32_t value, const Source& source);
~BindingDecoration() override;
/// @return the decoration kind
DecorationKind GetKind() const override;
/// @returns true if this is a binding decoration
bool IsBinding() const override;

View File

@ -17,17 +17,11 @@
namespace tint {
namespace ast {
constexpr const DecorationKind BuiltinDecoration::Kind;
BuiltinDecoration::BuiltinDecoration(Builtin builtin, const Source& source)
: Base(source), builtin_(builtin) {}
BuiltinDecoration::~BuiltinDecoration() = default;
DecorationKind BuiltinDecoration::GetKind() const {
return Kind;
}
bool BuiltinDecoration::IsBuiltin() const {
return true;
}

View File

@ -25,18 +25,12 @@ namespace ast {
class BuiltinDecoration
: public Castable<BuiltinDecoration, VariableDecoration> {
public:
/// The kind of decoration that this type represents
static constexpr const DecorationKind Kind = DecorationKind::kBuiltin;
/// constructor
/// @param builtin the builtin value
/// @param source the source of this decoration
BuiltinDecoration(Builtin builtin, const Source& source);
~BuiltinDecoration() override;
/// @return the decoration kind
DecorationKind GetKind() const override;
/// @returns true if this is a builtin decoration
bool IsBuiltin() const override;

View File

@ -17,17 +17,11 @@
namespace tint {
namespace ast {
constexpr const DecorationKind ConstantIdDecoration::Kind;
ConstantIdDecoration::ConstantIdDecoration(uint32_t val, const Source& source)
: Base(source), value_(val) {}
ConstantIdDecoration::~ConstantIdDecoration() = default;
DecorationKind ConstantIdDecoration::GetKind() const {
return Kind;
}
bool ConstantIdDecoration::IsConstantId() const {
return true;
}

View File

@ -25,18 +25,12 @@ namespace ast {
class ConstantIdDecoration
: public Castable<ConstantIdDecoration, VariableDecoration> {
public:
/// The kind of decoration that this type represents
static constexpr const DecorationKind Kind = DecorationKind::kConstantId;
/// constructor
/// @param val the constant_id value
/// @param source the source of this decoration
ConstantIdDecoration(uint32_t val, const Source& source);
~ConstantIdDecoration() override;
/// @return the decoration kind
DecorationKind GetKind() const override;
/// @returns true if this is a constant_id decoration
bool IsConstantId() const override;

View File

@ -23,34 +23,16 @@ std::ostream& operator<<(std::ostream& out, DecorationKind data) {
switch (data) {
case DecorationKind::kArray:
return out << "array";
case DecorationKind::kStride:
return out << "stride";
case DecorationKind::kFunction:
return out << "function";
case DecorationKind::kStage:
return out << "stage";
case DecorationKind::kWorkgroup:
return out << "workgroup";
case DecorationKind::kStruct:
return out << "struct";
case DecorationKind::kStructMember:
return out << "struct member";
case DecorationKind::kStructMemberOffset:
return out << "offset";
case DecorationKind::kType:
return out << "type";
case DecorationKind::kAccess:
return out << "access";
case DecorationKind::kVariable:
return out << "variable";
case DecorationKind::kBinding:
return out << "binding";
case DecorationKind::kBuiltin:
return out << "builtin";
case DecorationKind::kConstantId:
return out << "constant_id";
case DecorationKind::kLocation:
return out << "location";
}
return out << "<unknown>";
}

View File

@ -28,20 +28,11 @@ namespace ast {
/// The decoration kind enumerator
enum class DecorationKind {
kArray,
/*|*/ kStride,
kFunction,
/*|*/ kStage,
/*|*/ kWorkgroup,
kStruct,
kStructMember,
/*|*/ kStructMemberOffset,
kType,
/*|*/ kAccess,
kVariable,
/*|*/ kBinding,
/*|*/ kBuiltin,
/*|*/ kConstantId,
/*|*/ kLocation,
};
std::ostream& operator<<(std::ostream& out, DecorationKind data);

View File

@ -64,21 +64,20 @@ TEST_F(DecorationTest, Is) {
TEST_F(DecorationTest, Kinds) {
EXPECT_EQ(ArrayDecoration::Kind, DecorationKind::kArray);
EXPECT_EQ(StrideDecoration::Kind, DecorationKind::kStride);
EXPECT_EQ(StrideDecoration::Kind, DecorationKind::kArray);
EXPECT_EQ(FunctionDecoration::Kind, DecorationKind::kFunction);
EXPECT_EQ(StageDecoration::Kind, DecorationKind::kStage);
EXPECT_EQ(WorkgroupDecoration::Kind, DecorationKind::kWorkgroup);
EXPECT_EQ(StageDecoration::Kind, DecorationKind::kFunction);
EXPECT_EQ(WorkgroupDecoration::Kind, DecorationKind::kFunction);
EXPECT_EQ(StructDecoration::Kind, DecorationKind::kStruct);
EXPECT_EQ(StructMemberDecoration::Kind, DecorationKind::kStructMember);
EXPECT_EQ(StructMemberOffsetDecoration::Kind,
DecorationKind::kStructMemberOffset);
EXPECT_EQ(StructMemberOffsetDecoration::Kind, DecorationKind::kStructMember);
EXPECT_EQ(TypeDecoration::Kind, DecorationKind::kType);
EXPECT_EQ(AccessDecoration::Kind, DecorationKind::kAccess);
EXPECT_EQ(AccessDecoration::Kind, DecorationKind::kType);
EXPECT_EQ(VariableDecoration::Kind, DecorationKind::kVariable);
EXPECT_EQ(BindingDecoration::Kind, DecorationKind::kBinding);
EXPECT_EQ(BuiltinDecoration::Kind, DecorationKind::kBuiltin);
EXPECT_EQ(ConstantIdDecoration::Kind, DecorationKind::kConstantId);
EXPECT_EQ(LocationDecoration::Kind, DecorationKind::kLocation);
EXPECT_EQ(BindingDecoration::Kind, DecorationKind::kVariable);
EXPECT_EQ(BuiltinDecoration::Kind, DecorationKind::kVariable);
EXPECT_EQ(ConstantIdDecoration::Kind, DecorationKind::kVariable);
EXPECT_EQ(LocationDecoration::Kind, DecorationKind::kVariable);
}
} // namespace

View File

@ -17,17 +17,11 @@
namespace tint {
namespace ast {
constexpr const DecorationKind LocationDecoration::Kind;
LocationDecoration::LocationDecoration(uint32_t val, const Source& source)
: Base(source), value_(val) {}
LocationDecoration::~LocationDecoration() = default;
DecorationKind LocationDecoration::GetKind() const {
return Kind;
}
bool LocationDecoration::IsLocation() const {
return true;
}

View File

@ -26,18 +26,12 @@ namespace ast {
class LocationDecoration
: public Castable<LocationDecoration, VariableDecoration> {
public:
/// The kind of decoration that this type represents
static constexpr const DecorationKind Kind = DecorationKind::kLocation;
/// constructor
/// @param value the location value
/// @param source the source of this decoration
explicit LocationDecoration(uint32_t value, const Source& source);
~LocationDecoration() override;
/// @return the decoration kind
DecorationKind GetKind() const override;
/// @returns true if this is a location decoration
bool IsLocation() const override;

View File

@ -17,17 +17,11 @@
namespace tint {
namespace ast {
constexpr const DecorationKind StageDecoration::Kind;
StageDecoration::StageDecoration(ast::PipelineStage stage, const Source& source)
: Base(source), stage_(stage) {}
StageDecoration::~StageDecoration() = default;
DecorationKind StageDecoration::GetKind() const {
return Kind;
}
bool StageDecoration::IsStage() const {
return true;
}

View File

@ -24,18 +24,12 @@ namespace ast {
/// A workgroup decoration
class StageDecoration : public Castable<StageDecoration, FunctionDecoration> {
public:
/// The kind of decoration that this type represents
static constexpr const DecorationKind Kind = DecorationKind::kStage;
/// constructor
/// @param stage the pipeline stage
/// @param source the source of this decoration
StageDecoration(ast::PipelineStage stage, const Source& source);
~StageDecoration() override;
/// @return the decoration kind
DecorationKind GetKind() const override;
/// @returns true if this is a stage decoration
bool IsStage() const override;

View File

@ -17,15 +17,9 @@
namespace tint {
namespace ast {
constexpr const DecorationKind StrideDecoration::Kind;
StrideDecoration::StrideDecoration(uint32_t stride, const Source& source)
: Base(source), stride_(stride) {}
DecorationKind StrideDecoration::GetKind() const {
return Kind;
}
bool StrideDecoration::IsStride() const {
return true;
}

View File

@ -27,18 +27,12 @@ namespace ast {
/// A stride decoration
class StrideDecoration : public Castable<StrideDecoration, ArrayDecoration> {
public:
/// The kind of decoration that this type represents
static constexpr const DecorationKind Kind = DecorationKind::kStride;
/// constructor
/// @param stride the stride value
/// @param source the source of this decoration
StrideDecoration(uint32_t stride, const Source& source);
~StrideDecoration() override;
/// @return the decoration kind
DecorationKind GetKind() const override;
/// @returns true if this is a stride decoration
bool IsStride() const override;

View File

@ -17,16 +17,10 @@
namespace tint {
namespace ast {
constexpr const DecorationKind StructMemberOffsetDecoration::Kind;
StructMemberOffsetDecoration::StructMemberOffsetDecoration(uint32_t offset,
const Source& source)
: Base(source), offset_(offset) {}
DecorationKind StructMemberOffsetDecoration::GetKind() const {
return Kind;
}
bool StructMemberOffsetDecoration::IsOffset() const {
return true;
}

View File

@ -28,19 +28,12 @@ namespace ast {
class StructMemberOffsetDecoration
: public Castable<StructMemberOffsetDecoration, StructMemberDecoration> {
public:
/// The kind of decoration that this type represents
static constexpr const DecorationKind Kind =
DecorationKind::kStructMemberOffset;
/// constructor
/// @param offset the offset value
/// @param source the source of this decoration
StructMemberOffsetDecoration(uint32_t offset, const Source& source);
~StructMemberOffsetDecoration() override;
/// @return the decoration kind
DecorationKind GetKind() const override;
/// @returns true if this is an offset decoration
bool IsOffset() const override;

View File

@ -17,8 +17,6 @@
namespace tint {
namespace ast {
constexpr const DecorationKind WorkgroupDecoration::Kind;
WorkgroupDecoration::WorkgroupDecoration(uint32_t x, const Source& source)
: Base(source), x_(x) {}
@ -35,10 +33,6 @@ WorkgroupDecoration::WorkgroupDecoration(uint32_t x,
WorkgroupDecoration::~WorkgroupDecoration() = default;
DecorationKind WorkgroupDecoration::GetKind() const {
return Kind;
}
bool WorkgroupDecoration::IsWorkgroup() const {
return true;
}

View File

@ -28,9 +28,6 @@ namespace ast {
class WorkgroupDecoration
: public Castable<WorkgroupDecoration, FunctionDecoration> {
public:
/// The kind of decoration that this type represents
static constexpr const DecorationKind Kind = DecorationKind::kWorkgroup;
/// constructor
/// @param x the workgroup x dimension size
/// @param source the source of this decoration
@ -48,9 +45,6 @@ class WorkgroupDecoration
WorkgroupDecoration(uint32_t x, uint32_t y, uint32_t z, const Source& source);
~WorkgroupDecoration() override;
/// @return the decoration kind
DecorationKind GetKind() const override;
/// @returns true if this is a workgroup decoration
bool IsWorkgroup() const override;