]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Make resolution of AssociatedItem instances polymorphic
authorOwen Avery <powerboat9.gamer@gmail.com>
Wed, 11 Oct 2023 19:06:21 +0000 (15:06 -0400)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 18:09:22 +0000 (19:09 +0100)
gcc/rust/ChangeLog:

* resolve/rust-ast-resolve-implitem.h
(ResolveToplevelImplItem::go): Take AssociatedItem as parameter.
(ResolveTopLevelTraitItems::go): Likewise.
* resolve/rust-ast-resolve-item.cc
(ResolveTraitItems::go): Likewise.
(ResolveItem::resolve_impl_item): Likewise.
(ResolveImplItems::go): Likewise.
* resolve/rust-ast-resolve-item.h
(ResolveTraitItems::go): Likewise.
(ResolveItem::resolve_impl_item): Likewise.
(ResolveImplItems::go): Likewise.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
gcc/rust/resolve/rust-ast-resolve-implitem.h
gcc/rust/resolve/rust-ast-resolve-item.cc
gcc/rust/resolve/rust-ast-resolve-item.h

index f03c2938a3e03e8b1092b297de2c6feb36a82647..bec43af4fae2275d406e9bd18117c877edf3a56c 100644 (file)
@@ -31,16 +31,7 @@ class ResolveToplevelImplItem : public ResolverBase
   using Rust::Resolver::ResolverBase::visit;
 
 public:
-  static void go (AST::InherentImplItem *item, const CanonicalPath &prefix)
-  {
-    if (item->is_marked_for_strip ())
-      return;
-
-    ResolveToplevelImplItem resolver (prefix);
-    item->accept_vis (resolver);
-  }
-
-  static void go (AST::TraitImplItem *item, const CanonicalPath &prefix)
+  static void go (AST::AssociatedItem *item, const CanonicalPath &prefix)
   {
     if (item->is_marked_for_strip ())
       return;
@@ -128,7 +119,7 @@ class ResolveTopLevelTraitItems : public ResolverBase
   using Rust::Resolver::ResolverBase::visit;
 
 public:
-  static void go (AST::TraitItem *item, const CanonicalPath &prefix,
+  static void go (AST::AssociatedItem *item, const CanonicalPath &prefix,
                  const CanonicalPath &canonical_prefix)
   {
     ResolveTopLevelTraitItems resolver (prefix, canonical_prefix);
index 48682f0049f0a3f587039fa80dc632dfe25e4735..04fa7216175101b4e6640811d4cf3ae9734b09d0 100644 (file)
@@ -33,7 +33,7 @@ ResolveTraitItems::ResolveTraitItems (const CanonicalPath &prefix,
 {}
 
 void
-ResolveTraitItems::go (AST::TraitItem *item, const CanonicalPath &prefix,
+ResolveTraitItems::go (AST::AssociatedItem *item, const CanonicalPath &prefix,
                       const CanonicalPath &canonical_prefix)
 {
   if (item->is_marked_for_strip ())
@@ -881,15 +881,7 @@ ResolveItem::visit (AST::ExternBlock &extern_block)
 }
 
 void
-ResolveItem::resolve_impl_item (AST::TraitImplItem *item,
-                               const CanonicalPath &prefix,
-                               const CanonicalPath &canonical_prefix)
-{
-  ResolveImplItems::go (item, prefix, canonical_prefix);
-}
-
-void
-ResolveItem::resolve_impl_item (AST::InherentImplItem *item,
+ResolveItem::resolve_impl_item (AST::AssociatedItem *item,
                                const CanonicalPath &prefix,
                                const CanonicalPath &canonical_prefix)
 {
@@ -1062,18 +1054,7 @@ ResolveImplItems::ResolveImplItems (const CanonicalPath &prefix,
 {}
 
 void
-ResolveImplItems::go (AST::InherentImplItem *item, const CanonicalPath &prefix,
-                     const CanonicalPath &canonical_prefix)
-{
-  if (item->is_marked_for_strip ())
-    return;
-
-  ResolveImplItems resolver (prefix, canonical_prefix);
-  item->accept_vis (resolver);
-}
-
-void
-ResolveImplItems::go (AST::TraitImplItem *item, const CanonicalPath &prefix,
+ResolveImplItems::go (AST::AssociatedItem *item, const CanonicalPath &prefix,
                      const CanonicalPath &canonical_prefix)
 {
   if (item->is_marked_for_strip ())
index 1246ad99f1c8e6d5edbf7a2e389717978538a6b0..26c36e7586f4774da9df8e6a120394278da184db 100644 (file)
@@ -32,7 +32,7 @@ class ResolveTraitItems : public ResolverBase
   using Rust::Resolver::ResolverBase::visit;
 
 public:
-  static void go (AST::TraitItem *item, const CanonicalPath &prefix,
+  static void go (AST::AssociatedItem *item, const CanonicalPath &prefix,
                  const CanonicalPath &canonical_prefix);
 
   void visit (AST::TraitItemType &type) override;
@@ -78,9 +78,7 @@ public:
   void visit (AST::UseDeclaration &) override;
 
 protected:
-  void resolve_impl_item (AST::TraitImplItem *item, const CanonicalPath &prefix,
-                         const CanonicalPath &canonical_prefix);
-  void resolve_impl_item (AST::InherentImplItem *item,
+  void resolve_impl_item (AST::AssociatedItem *item,
                          const CanonicalPath &prefix,
                          const CanonicalPath &canonical_prefix);
   void resolve_extern_item (AST::ExternalItem *item);
@@ -97,9 +95,7 @@ class ResolveImplItems : public ResolveItem
   using Rust::Resolver::ResolveItem::visit;
 
 public:
-  static void go (AST::InherentImplItem *item, const CanonicalPath &prefix,
-                 const CanonicalPath &canonical_prefix);
-  static void go (AST::TraitImplItem *item, const CanonicalPath &prefix,
+  static void go (AST::AssociatedItem *item, const CanonicalPath &prefix,
                  const CanonicalPath &canonical_prefix);
 
   void visit (AST::TypeAlias &alias) override;