From: Arthur Cohen <arthur.co...@embecosm.com>

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

Reply via email to