diff options
author | David Faust <david.faust@oracle.com> | 2021-12-13 12:53:26 -0800 |
---|---|---|
committer | David Faust <david.faust@oracle.com> | 2021-12-13 14:34:45 -0800 |
commit | e43a784dc89030941b0cc43309541970c59a723c (patch) | |
tree | 2249ba90aae150b0f17ad44179d35c34c2d7bc0e /gcc | |
parent | 0024bc2f028369b871a65ceb11b2fddfb0f9c3aa (diff) | |
download | gcc-e43a784dc89030941b0cc43309541970c59a723c.zip gcc-e43a784dc89030941b0cc43309541970c59a723c.tar.gz gcc-e43a784dc89030941b0cc43309541970c59a723c.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/ast/rust-expr.h | 9 | ||||
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-expr.h | 10 | ||||
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-expr.h | 6 |
3 files changed, 7 insertions, 18 deletions
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<bool (Expr *)> 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<std::unique_ptr<HIR::Expr> > elements; - elems.iterate ([&] (AST::Expr *elem) mutable -> bool { - HIR::Expr *translated_elem = ASTLoweringExpr::translate (elem); - elements.push_back (std::unique_ptr<HIR::Expr> (translated_elem)); - return true; - }); + for (auto &elem : elems.get_values ()) + { + HIR::Expr *translated_elem = ASTLoweringExpr::translate (elem.get ()); + elements.push_back (std::unique_ptr<HIR::Expr> (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 |