diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2023-10-11 15:06:21 -0400 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 19:09:22 +0100 |
commit | 2854b1204f2896d1ffa4371c6141cf7b65dca918 (patch) | |
tree | 2bbcb6ba414165f2e21fd037d549477f2a86e4f8 /gcc | |
parent | 124bfaf4323f627bd7721401c3a86f369f45a1b2 (diff) | |
download | gcc-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.h | 13 | ||||
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-item.cc | 25 | ||||
-rw-r--r-- | 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 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; |