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 <pierre-emmanuel.patry@embecosm.com>
This commit is contained in:
parent
de8bc8f9bc
commit
90ee631428
3 changed files with 6 additions and 6 deletions
|
@ -95,15 +95,15 @@ Attribute::is_derive () const
|
|||
*
|
||||
* @param attrs The attributes on the item to derive
|
||||
*/
|
||||
std::vector<AST::SimplePath>
|
||||
std::vector<std::reference_wrapper<AST::SimplePath>>
|
||||
Attribute::get_traits_to_derive ()
|
||||
{
|
||||
std::vector<AST::SimplePath> result;
|
||||
std::vector<std::reference_wrapper<AST::SimplePath>> result;
|
||||
auto &input = get_attr_input ();
|
||||
switch (input.get_attr_input_type ())
|
||||
{
|
||||
case AST::AttrInput::META_ITEM: {
|
||||
auto meta = static_cast<AST::AttrInputMetaItemContainer &> (input);
|
||||
auto &meta = static_cast<AST::AttrInputMetaItemContainer &> (input);
|
||||
for (auto ¤t : meta.get_items ())
|
||||
{
|
||||
// HACK: Find a better way to achieve the downcast.
|
||||
|
|
|
@ -519,7 +519,7 @@ public:
|
|||
|
||||
bool is_derive () const;
|
||||
|
||||
std::vector<AST::SimplePath> get_traits_to_derive ();
|
||||
std::vector<std::reference_wrapper<AST::SimplePath>> get_traits_to_derive ();
|
||||
|
||||
// default destructor
|
||||
~Attribute () = default;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue