From: Arthur Cohen <[email protected]>
gcc/rust/ChangeLog:
* expand/rust-derive-cmp-common.cc (SelfOther::indexes): Fix formatting.
(SelfOther::fields): Make iterator const.
* expand/rust-derive-cmp-common.h (struct SelfOther): New declaration
for indexes.
* expand/rust-derive-partial-eq.cc (DerivePartialEq::visit_tuple): Use
the new API.
(DerivePartialEq::visit_struct): Likewise.
---
gcc/rust/expand/rust-derive-cmp-common.cc | 10 ++++------
gcc/rust/expand/rust-derive-cmp-common.h | 3 ++-
gcc/rust/expand/rust-derive-partial-eq.cc | 11 ++---------
3 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/gcc/rust/expand/rust-derive-cmp-common.cc
b/gcc/rust/expand/rust-derive-cmp-common.cc
index ba260c53291..752f7ce4778 100644
--- a/gcc/rust/expand/rust-derive-cmp-common.cc
+++ b/gcc/rust/expand/rust-derive-cmp-common.cc
@@ -32,14 +32,12 @@ SelfOther::index (Builder builder, int idx)
}
std::vector<SelfOther>
-SelfOther::indexes (Builder builder, int limit)
+SelfOther::indexes (Builder builder, const std::vector<TupleField> &fields)
{
std::vector<SelfOther> vec;
- for (int i = 0; i < limit; i++)
- {
- vec.emplace_back (SelfOther::index (builder, i));
- }
+ for (size_t i = 0; i < fields.size (); i++)
+ vec.emplace_back (SelfOther::index (builder, i));
return vec;
}
@@ -58,7 +56,7 @@ SelfOther::fields (Builder builder, const
std::vector<StructField> &fields)
{
std::vector<SelfOther> vec;
- for (auto &field : fields)
+ for (const auto &field : fields)
vec.emplace_back (
SelfOther::field (builder, field.get_field_name ().as_string ()));
diff --git a/gcc/rust/expand/rust-derive-cmp-common.h
b/gcc/rust/expand/rust-derive-cmp-common.h
index 2353c71292f..bb7ae842a6f 100644
--- a/gcc/rust/expand/rust-derive-cmp-common.h
+++ b/gcc/rust/expand/rust-derive-cmp-common.h
@@ -36,7 +36,8 @@ struct SelfOther
/* Create a <self.i> and an <other.i> expression */
static SelfOther index (Builder builder, int idx);
- static std::vector<SelfOther> indexes (Builder builder, int limit);
+ static std::vector<SelfOther> indexes (Builder builder,
+ const std::vector<TupleField> &fields);
/* Create a <self.field> and an <other.field> expression */
static SelfOther field (Builder builder, const std::string &field_name);
diff --git a/gcc/rust/expand/rust-derive-partial-eq.cc
b/gcc/rust/expand/rust-derive-partial-eq.cc
index 13a09fce059..1f2fa35b284 100644
--- a/gcc/rust/expand/rust-derive-partial-eq.cc
+++ b/gcc/rust/expand/rust-derive-partial-eq.cc
@@ -116,10 +116,7 @@ void
DerivePartialEq::visit_tuple (TupleStruct &item)
{
auto type_name = item.get_struct_name ().as_string ();
- auto fields = std::vector<SelfOther> ();
-
- for (size_t idx = 0; idx < item.get_fields ().size (); idx++)
- fields.emplace_back (SelfOther::index (builder, idx));
+ auto fields = SelfOther::indexes (builder, item.get_fields ());
auto fn = eq_fn (build_eq_expression (std::move (fields)), type_name);
@@ -131,11 +128,7 @@ void
DerivePartialEq::visit_struct (StructStruct &item)
{
auto type_name = item.get_struct_name ().as_string ();
- auto fields = std::vector<SelfOther> ();
-
- for (auto &field : item.get_fields ())
- fields.emplace_back (
- SelfOther::field (builder, field.get_field_name ().as_string ()));
+ auto fields = SelfOther::fields (builder, item.get_fields ());
auto fn = eq_fn (build_eq_expression (std::move (fields)), type_name);
--
2.49.0