From: Arthur Cohen <[email protected]>
gcc/rust/ChangeLog:
* expand/rust-derive-partial-eq.cc (DerivePartialEq::tuple_indexes):
Remove.
(DerivePartialEq::field_acccesses): Remove.
(DerivePartialEq::visit_tuple): Use new API.
(DerivePartialEq::visit_struct): Likewise.
* expand/rust-derive-partial-eq.h: Remove declarations.
---
gcc/rust/expand/rust-derive-partial-eq.cc | 22 ++--------------------
gcc/rust/expand/rust-derive-partial-eq.h | 14 +-------------
2 files changed, 3 insertions(+), 33 deletions(-)
diff --git a/gcc/rust/expand/rust-derive-partial-eq.cc
b/gcc/rust/expand/rust-derive-partial-eq.cc
index 22368bcb2b0..13a09fce059 100644
--- a/gcc/rust/expand/rust-derive-partial-eq.cc
+++ b/gcc/rust/expand/rust-derive-partial-eq.cc
@@ -83,24 +83,6 @@ DerivePartialEq::eq_fn (std::unique_ptr<Expr>
&&cmp_expression,
std::move (block));
}
-DerivePartialEq::SelfOther
-DerivePartialEq::tuple_indexes (int idx)
-{
- return SelfOther{
- builder.tuple_idx ("self", idx),
- builder.tuple_idx ("other", idx),
- };
-}
-
-DerivePartialEq::SelfOther
-DerivePartialEq::field_acccesses (const std::string &field_name)
-{
- return SelfOther{
- builder.field_access (builder.identifier ("self"), field_name),
- builder.field_access (builder.identifier ("other"), field_name),
- };
-}
-
std::unique_ptr<Expr>
DerivePartialEq::build_eq_expression (
std::vector<SelfOther> &&field_expressions)
@@ -137,7 +119,7 @@ DerivePartialEq::visit_tuple (TupleStruct &item)
auto fields = std::vector<SelfOther> ();
for (size_t idx = 0; idx < item.get_fields ().size (); idx++)
- fields.emplace_back (tuple_indexes (idx));
+ fields.emplace_back (SelfOther::index (builder, idx));
auto fn = eq_fn (build_eq_expression (std::move (fields)), type_name);
@@ -153,7 +135,7 @@ DerivePartialEq::visit_struct (StructStruct &item)
for (auto &field : item.get_fields ())
fields.emplace_back (
- field_acccesses (field.get_field_name ().as_string ()));
+ SelfOther::field (builder, field.get_field_name ().as_string ()));
auto fn = eq_fn (build_eq_expression (std::move (fields)), type_name);
diff --git a/gcc/rust/expand/rust-derive-partial-eq.h
b/gcc/rust/expand/rust-derive-partial-eq.h
index 12d793d81bc..fdfe4dacb85 100644
--- a/gcc/rust/expand/rust-derive-partial-eq.h
+++ b/gcc/rust/expand/rust-derive-partial-eq.h
@@ -21,6 +21,7 @@
#include "rust-derive.h"
#include "rust-path.h"
+#include "rust-derive-cmp-common.h"
namespace Rust {
namespace AST {
@@ -46,19 +47,6 @@ private:
std::unique_ptr<AssociatedItem> eq_fn (std::unique_ptr<Expr>
&&cmp_expression,
std::string type_name);
- /**
- * A pair of two expressions from each instance being compared. E.g. this
- * could be `self.0` and `other.0`, or `self.field` and `other.field`
- */
- struct SelfOther
- {
- std::unique_ptr<Expr> self_expr;
- std::unique_ptr<Expr> other_expr;
- };
-
- SelfOther tuple_indexes (int idx);
- SelfOther field_acccesses (const std::string &field_name);
-
/**
* Build a suite of equality arithmetic expressions chained together by a
* boolean AND operator
--
2.49.0