From: Pierre-Emmanuel Patry Date: Mon, 31 Jul 2023 10:31:58 +0000 (+0200) Subject: gccrs: Change trait getter to return references X-Git-Tag: basepoints/gcc-15~2162 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=90ee631428f0af1d91ee297ea114755d7f0563c7;p=thirdparty%2Fgcc.git gccrs: Change trait getter to return references Having copy and any other constructor stuff might lead to a breakage in the future where the node id differs due to a newly constructed SimplePath node. This change will allow us to assert the NodeId is from the ast and not any copy made in between. gcc/rust/ChangeLog: * ast/rust-ast.cc (Attribute::get_traits_to_derive): Change return type to a vector of references. * ast/rust-ast.h: Update constructor. * expand/rust-expand-visitor.cc (ExpandVisitor::expand_inner_stmts): Update function call. Signed-off-by: Pierre-Emmanuel Patry --- diff --git a/gcc/rust/ast/rust-ast.cc b/gcc/rust/ast/rust-ast.cc index 076f40e338b7..3525a15beb58 100644 --- a/gcc/rust/ast/rust-ast.cc +++ b/gcc/rust/ast/rust-ast.cc @@ -95,15 +95,15 @@ Attribute::is_derive () const * * @param attrs The attributes on the item to derive */ -std::vector +std::vector> Attribute::get_traits_to_derive () { - std::vector result; + std::vector> result; auto &input = get_attr_input (); switch (input.get_attr_input_type ()) { case AST::AttrInput::META_ITEM: { - auto meta = static_cast (input); + auto &meta = static_cast (input); for (auto ¤t : meta.get_items ()) { // HACK: Find a better way to achieve the downcast. diff --git a/gcc/rust/ast/rust-ast.h b/gcc/rust/ast/rust-ast.h index 32732ffdbd75..136da86525d9 100644 --- a/gcc/rust/ast/rust-ast.h +++ b/gcc/rust/ast/rust-ast.h @@ -519,7 +519,7 @@ public: bool is_derive () const; - std::vector get_traits_to_derive (); + std::vector> get_traits_to_derive (); // default destructor ~Attribute () = default; diff --git a/gcc/rust/expand/rust-expand-visitor.cc b/gcc/rust/expand/rust-expand-visitor.cc index f75069b2e0a5..55d5de0a04ec 100644 --- a/gcc/rust/expand/rust-expand-visitor.cc +++ b/gcc/rust/expand/rust-expand-visitor.cc @@ -185,7 +185,7 @@ ExpandVisitor::expand_inner_items ( for (auto &to_derive : traits_to_derive) { auto maybe_builtin = MacroBuiltin::builtins.lookup ( - to_derive.as_string ()); + to_derive.get ().as_string ()); if (MacroBuiltin::builtins.is_iter_ok (maybe_builtin)) { auto new_item @@ -271,7 +271,7 @@ ExpandVisitor::expand_inner_stmts (AST::BlockExpr &expr) for (auto &to_derive : traits_to_derive) { auto maybe_builtin = MacroBuiltin::builtins.lookup ( - to_derive.as_string ()); + to_derive.get ().as_string ()); if (MacroBuiltin::builtins.is_iter_ok (maybe_builtin)) { auto new_item