From e43a784dc89030941b0cc43309541970c59a723c Mon Sep 17 00:00:00 2001 From: David Faust Date: Mon, 13 Dec 2021 12:53:26 -0800 Subject: Get rid of lambdas with AST::ArrayElemsValues These constructs make working with the IR needlessly complicated for static analysis. Replace with simple for loops, and delete the old ArrayElemsValues::iterate () method. Fixes: #720 --- gcc/rust/ast/rust-expr.h | 9 --------- gcc/rust/hir/rust-ast-lower-expr.h | 10 +++++----- gcc/rust/resolve/rust-ast-resolve-expr.h | 6 ++---- 3 files changed, 7 insertions(+), 18 deletions(-) (limited to 'gcc') diff --git a/gcc/rust/ast/rust-expr.h b/gcc/rust/ast/rust-expr.h index 3463f5a..7f6714a 100644 --- a/gcc/rust/ast/rust-expr.h +++ b/gcc/rust/ast/rust-expr.h @@ -996,15 +996,6 @@ public: size_t get_num_values () const { return values.size (); } - void iterate (std::function cb) - { - for (auto it = values.begin (); it != values.end (); it++) - { - if (!cb ((*it).get ())) - return; - } - } - protected: ArrayElemsValues *clone_array_elems_impl () const override { diff --git a/gcc/rust/hir/rust-ast-lower-expr.h b/gcc/rust/hir/rust-ast-lower-expr.h index f36096b..d6e2194 100644 --- a/gcc/rust/hir/rust-ast-lower-expr.h +++ b/gcc/rust/hir/rust-ast-lower-expr.h @@ -303,11 +303,11 @@ public: void visit (AST::ArrayElemsValues &elems) override { std::vector > elements; - elems.iterate ([&] (AST::Expr *elem) mutable -> bool { - HIR::Expr *translated_elem = ASTLoweringExpr::translate (elem); - elements.push_back (std::unique_ptr (translated_elem)); - return true; - }); + for (auto &elem : elems.get_values ()) + { + HIR::Expr *translated_elem = ASTLoweringExpr::translate (elem.get ()); + elements.push_back (std::unique_ptr (translated_elem)); + } translated_array_elems = new HIR::ArrayElemsValues (std::move (elements)); } diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.h b/gcc/rust/resolve/rust-ast-resolve-expr.h index 12a4f8c..05d116f 100644 --- a/gcc/rust/resolve/rust-ast-resolve-expr.h +++ b/gcc/rust/resolve/rust-ast-resolve-expr.h @@ -224,10 +224,8 @@ public: void visit (AST::ArrayElemsValues &elems) override { - elems.iterate ([&] (AST::Expr *elem) mutable -> bool { - ResolveExpr::go (elem, elems.get_node_id ()); - return true; - }); + for (auto &elem : elems.get_values ()) + ResolveExpr::go (elem.get (), elems.get_node_id ()); } void visit (AST::ArrayExpr &expr) override -- cgit v1.1