From 7cfad27662370008db7fa1dd1e2635d02ca312a9 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Patry Date: Mon, 31 Jul 2023 12:31:58 +0200 Subject: 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 --- gcc/rust/ast/rust-ast.cc | 6 +++--- gcc/rust/ast/rust-ast.h | 2 +- gcc/rust/expand/rust-expand-visitor.cc | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'gcc') diff --git a/gcc/rust/ast/rust-ast.cc b/gcc/rust/ast/rust-ast.cc index e7b3db0..5534590 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 3fb0cd1..db55f01 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 f75069b..55d5de0 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 -- cgit v1.1