aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2023-10-11 15:06:21 -0400
committerArthur Cohen <arthur.cohen@embecosm.com>2024-01-16 19:09:22 +0100
commit2854b1204f2896d1ffa4371c6141cf7b65dca918 (patch)
tree2bbcb6ba414165f2e21fd037d549477f2a86e4f8 /gcc
parent124bfaf4323f627bd7721401c3a86f369f45a1b2 (diff)
downloadgcc-2854b1204f2896d1ffa4371c6141cf7b65dca918.zip
gcc-2854b1204f2896d1ffa4371c6141cf7b65dca918.tar.gz
gcc-2854b1204f2896d1ffa4371c6141cf7b65dca918.tar.bz2
gccrs: 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>
Diffstat (limited to 'gcc')
-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 f03c293..bec43af 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 48682f00..04fa721 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 1246ad9..26c36e7 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;