[gcc r14-8066] gccrs: Make resolution of AssociatedItem instances polymorphic
Arthur Cohen
cohenarthur@gcc.gnu.org
Tue Jan 16 18:15:40 GMT 2024
https://gcc.gnu.org/g:2854b1204f2896d1ffa4371c6141cf7b65dca918
commit r14-8066-g2854b1204f2896d1ffa4371c6141cf7b65dca918
Author: Owen Avery <powerboat9.gamer@gmail.com>
Date: Wed Oct 11 15:06:21 2023 -0400
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>
Diff:
---
gcc/rust/resolve/rust-ast-resolve-implitem.h | 13 ++-----------
gcc/rust/resolve/rust-ast-resolve-item.cc | 25 +++----------------------
gcc/rust/resolve/rust-ast-resolve-item.h | 10 +++-------
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 f03c2938a3e..bec43af4fae 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 48682f0049f..04fa7216175 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 1246ad99f1c..26c36e7586f 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;
More information about the Gcc-cvs
mailing list