aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2023-10-11 15:06:21 -0400
committerCohenArthur <arthur.cohen@embecosm.com>2023-10-20 12:24:38 +0000
commit4931eb8339017e2a30ab721114cda8858c036d9f (patch)
tree6d650e00eb9dd9d1a1bbc3bdb08881f48d2ce043
parent2ef9814c6e27a2860951151e09f2c6230379970f (diff)
Make resolution of AssociatedItem instances polymorphic
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>
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-implitem.h13
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-item.cc25
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-item.h10
3 files changed, 8 insertions, 40 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-implitem.h b/gcc/rust/resolve/rust-ast-resolve-implitem.h
index 9a34aa83889..aa7ffe3d796 100644
--- a/gcc/rust/resolve/rust-ast-resolve-implitem.h
+++ b/gcc/rust/resolve/rust-ast-resolve-implitem.h
@@ -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);
diff --git a/gcc/rust/resolve/rust-ast-resolve-item.cc b/gcc/rust/resolve/rust-ast-resolve-item.cc
index baab6220999..3b730924c27 100644
--- a/gcc/rust/resolve/rust-ast-resolve-item.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-item.cc
@@ -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 ())
diff --git a/gcc/rust/resolve/rust-ast-resolve-item.h b/gcc/rust/resolve/rust-ast-resolve-item.h
index db47df5713a..273d5c1c9ef 100644
--- a/gcc/rust/resolve/rust-ast-resolve-item.h
+++ b/gcc/rust/resolve/rust-ast-resolve-item.h
@@ -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;