Replace TypeDecoration::(Is|As)Access with Castable

Change-Id: I06a2f663cf56f8bb9a9b05557aef428b2d69e84c
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34304
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/ast/access_decoration.cc b/src/ast/access_decoration.cc
index f192b06..f77d78c 100644
--- a/src/ast/access_decoration.cc
+++ b/src/ast/access_decoration.cc
@@ -22,10 +22,6 @@
 
 AccessDecoration::~AccessDecoration() = default;
 
-bool AccessDecoration::IsAccess() const {
-  return true;
-}
-
 void AccessDecoration::to_str(std::ostream& out, size_t indent) const {
   make_indent(out, indent);
   out << "AccessDecoration{" << value_ << "}" << std::endl;
diff --git a/src/ast/access_decoration.h b/src/ast/access_decoration.h
index 15f7e12..37a400e 100644
--- a/src/ast/access_decoration.h
+++ b/src/ast/access_decoration.h
@@ -32,9 +32,6 @@
   explicit AccessDecoration(AccessControl value, const Source& source);
   ~AccessDecoration() override;
 
-  /// @returns true if this is an access decoration
-  bool IsAccess() const override;
-
   /// @returns the access control value
   AccessControl value() const { return value_; }
 
diff --git a/src/ast/type_decoration.cc b/src/ast/type_decoration.cc
index 84f9e5f..e1d872d 100644
--- a/src/ast/type_decoration.cc
+++ b/src/ast/type_decoration.cc
@@ -31,14 +31,5 @@
   return Kind;
 }
 
-bool TypeDecoration::IsAccess() const {
-  return false;
-}
-
-AccessDecoration* TypeDecoration::AsAccess() {
-  assert(IsAccess());
-  return static_cast<AccessDecoration*>(this);
-}
-
 }  // namespace ast
 }  // namespace tint
diff --git a/src/ast/type_decoration.h b/src/ast/type_decoration.h
index 987cc9c..0916a9a 100644
--- a/src/ast/type_decoration.h
+++ b/src/ast/type_decoration.h
@@ -38,12 +38,6 @@
   /// @return the decoration kind
   DecorationKind GetKind() const override;
 
-  /// @returns true if this is an access decoration
-  virtual bool IsAccess() const;
-
-  /// @returns the decoration as an access decoration
-  AccessDecoration* AsAccess();
-
  protected:
   /// Constructor
   /// @param source the source of this decoration
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index 675c2fe..86eeeb8 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -840,8 +840,8 @@
   for (auto* deco : access_decos) {
     // If we have an access control decoration then we take it and wrap our
     // type up with that decoration
-    ty = module_.create<ast::type::AccessControlType>(deco->AsAccess()->value(),
-                                                      ty);
+    ty = module_.create<ast::type::AccessControlType>(
+        deco->As<ast::AccessDecoration>()->value(), ty);
   }
 
   return TypedIdentifier{ty, ident.value, ident.source};