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>
diff --git a/src/ast/access_decoration.cc b/src/ast/access_decoration.cc
index a22b99b..f192b06 100644
--- a/src/ast/access_decoration.cc
+++ b/src/ast/access_decoration.cc
@@ -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;
 }
diff --git a/src/ast/access_decoration.h b/src/ast/access_decoration.h
index 41baa63..15f7e12 100644
--- a/src/ast/access_decoration.h
+++ b/src/ast/access_decoration.h
@@ -26,18 +26,12 @@
 /// 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;
 
diff --git a/src/ast/binding_decoration.cc b/src/ast/binding_decoration.cc
index 73f3836..2b85dda 100644
--- a/src/ast/binding_decoration.cc
+++ b/src/ast/binding_decoration.cc
@@ -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;
 }
diff --git a/src/ast/binding_decoration.h b/src/ast/binding_decoration.h
index 8799656..c4bbf9d 100644
--- a/src/ast/binding_decoration.h
+++ b/src/ast/binding_decoration.h
@@ -26,18 +26,12 @@
 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;
 
diff --git a/src/ast/builtin_decoration.cc b/src/ast/builtin_decoration.cc
index a620290..34d48f5 100644
--- a/src/ast/builtin_decoration.cc
+++ b/src/ast/builtin_decoration.cc
@@ -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;
 }
diff --git a/src/ast/builtin_decoration.h b/src/ast/builtin_decoration.h
index 4aaf215..251a409 100644
--- a/src/ast/builtin_decoration.h
+++ b/src/ast/builtin_decoration.h
@@ -25,18 +25,12 @@
 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;
 
diff --git a/src/ast/constant_id_decoration.cc b/src/ast/constant_id_decoration.cc
index 405d064..86eaa7a 100644
--- a/src/ast/constant_id_decoration.cc
+++ b/src/ast/constant_id_decoration.cc
@@ -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;
 }
diff --git a/src/ast/constant_id_decoration.h b/src/ast/constant_id_decoration.h
index ec8512c..0a1192f 100644
--- a/src/ast/constant_id_decoration.h
+++ b/src/ast/constant_id_decoration.h
@@ -25,18 +25,12 @@
 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;
 
diff --git a/src/ast/decoration.cc b/src/ast/decoration.cc
index 5c8af19..f507183 100644
--- a/src/ast/decoration.cc
+++ b/src/ast/decoration.cc
@@ -23,34 +23,16 @@
   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>";
 }
diff --git a/src/ast/decoration.h b/src/ast/decoration.h
index 69e3287..7a92d4a 100644
--- a/src/ast/decoration.h
+++ b/src/ast/decoration.h
@@ -28,20 +28,11 @@
 /// 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);
diff --git a/src/ast/decoration_test.cc b/src/ast/decoration_test.cc
index d514979..f3feae8 100644
--- a/src/ast/decoration_test.cc
+++ b/src/ast/decoration_test.cc
@@ -64,21 +64,20 @@
 
 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
diff --git a/src/ast/location_decoration.cc b/src/ast/location_decoration.cc
index bc0c625..3001b61 100644
--- a/src/ast/location_decoration.cc
+++ b/src/ast/location_decoration.cc
@@ -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;
 }
diff --git a/src/ast/location_decoration.h b/src/ast/location_decoration.h
index 2d1d029..e04c503 100644
--- a/src/ast/location_decoration.h
+++ b/src/ast/location_decoration.h
@@ -26,18 +26,12 @@
 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;
 
diff --git a/src/ast/stage_decoration.cc b/src/ast/stage_decoration.cc
index da0f52b..ecb923f 100644
--- a/src/ast/stage_decoration.cc
+++ b/src/ast/stage_decoration.cc
@@ -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;
 }
diff --git a/src/ast/stage_decoration.h b/src/ast/stage_decoration.h
index 15d7490..0846b6d 100644
--- a/src/ast/stage_decoration.h
+++ b/src/ast/stage_decoration.h
@@ -24,18 +24,12 @@
 /// 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;
 
diff --git a/src/ast/stride_decoration.cc b/src/ast/stride_decoration.cc
index a0b2c4e..eea3053 100644
--- a/src/ast/stride_decoration.cc
+++ b/src/ast/stride_decoration.cc
@@ -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;
 }
diff --git a/src/ast/stride_decoration.h b/src/ast/stride_decoration.h
index 84acdd3..ac4fd37 100644
--- a/src/ast/stride_decoration.h
+++ b/src/ast/stride_decoration.h
@@ -27,18 +27,12 @@
 /// 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;
 
diff --git a/src/ast/struct_member_offset_decoration.cc b/src/ast/struct_member_offset_decoration.cc
index 9ded0fa..f1ceb43 100644
--- a/src/ast/struct_member_offset_decoration.cc
+++ b/src/ast/struct_member_offset_decoration.cc
@@ -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;
 }
diff --git a/src/ast/struct_member_offset_decoration.h b/src/ast/struct_member_offset_decoration.h
index e0f015c..21c2cf4 100644
--- a/src/ast/struct_member_offset_decoration.h
+++ b/src/ast/struct_member_offset_decoration.h
@@ -28,19 +28,12 @@
 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;
 
diff --git a/src/ast/workgroup_decoration.cc b/src/ast/workgroup_decoration.cc
index 1d30401..248718b 100644
--- a/src/ast/workgroup_decoration.cc
+++ b/src/ast/workgroup_decoration.cc
@@ -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() = default;
 
-DecorationKind WorkgroupDecoration::GetKind() const {
-  return Kind;
-}
-
 bool WorkgroupDecoration::IsWorkgroup() const {
   return true;
 }
diff --git a/src/ast/workgroup_decoration.h b/src/ast/workgroup_decoration.h
index bc6bd99..47cc51a 100644
--- a/src/ast/workgroup_decoration.h
+++ b/src/ast/workgroup_decoration.h
@@ -28,9 +28,6 @@
 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 @@
   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;