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