diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2023-05-26 13:16:11 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-06-08 14:32:35 +0200 |
commit | 562a0860f15ec5da89cd3605bcab5da18421ce15 (patch) | |
tree | 1a20a097b5df41fa3c92666694987e32a147707f /gcc | |
parent | c60b36b977da356ea4a120ffd5e0c1fc4e1aedca (diff) | |
download | gcc-562a0860f15ec5da89cd3605bcab5da18421ce15.zip gcc-562a0860f15ec5da89cd3605bcab5da18421ce15.tar.gz gcc-562a0860f15ec5da89cd3605bcab5da18421ce15.tar.bz2 |
ast: Fix attribute collection
Items attribute were not correctly collected and thus could not be
expanded from a previous macro invocation.
gcc/rust/ChangeLog:
* ast/rust-ast-collector.cc (TokenCollector::visit): Fix
attribute collection.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/ast/rust-ast-collector.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/rust/ast/rust-ast-collector.cc b/gcc/rust/ast/rust-ast-collector.cc index 639200a..e261849 100644 --- a/gcc/rust/ast/rust-ast-collector.cc +++ b/gcc/rust/ast/rust-ast-collector.cc @@ -1630,6 +1630,7 @@ TokenCollector::visit (Module &module) // Item* // } + visit_items_as_lines (module.get_outer_attrs ()); visit (module.get_visibility ()); auto name = module.get_name (); tokens.push_back (Rust::Token::make (MOD, module.get_locus ())); @@ -1660,6 +1661,7 @@ TokenCollector::visit (Module &module) void TokenCollector::visit (ExternCrate &crate) { + visit_items_as_lines (crate.get_outer_attrs ()); tokens.push_back (Rust::Token::make (EXTERN_TOK, crate.get_locus ())); tokens.push_back (Rust::Token::make (CRATE, Location ())); auto ref = crate.get_referenced_crate (); @@ -1748,6 +1750,7 @@ TokenCollector::visit (UseTreeRebind &use_tree) void TokenCollector::visit (UseDeclaration &decl) { + visit_items_as_lines (decl.get_outer_attrs ()); tokens.push_back (Rust::Token::make (USE, decl.get_locus ())); visit (*decl.get_tree ()); tokens.push_back (Rust::Token::make (SEMICOLON, Location ())); @@ -1762,6 +1765,7 @@ TokenCollector::visit (Function &function) // ( FunctionParameters? ) // FunctionReturnType? WhereClause? // ( BlockExpression | ; ) + visit_items_as_lines (function.get_outer_attrs ()); visit (function.get_visibility ()); @@ -1801,6 +1805,7 @@ TokenCollector::visit (TypeAlias &type_alias) // Note: Associated types are handled by `AST::TraitItemType`. + visit_items_as_lines (type_alias.get_outer_attrs ()); if (type_alias.has_visibility ()) visit (type_alias.get_visibility ()); auto alias_name = type_alias.get_new_type_name (); @@ -1819,6 +1824,7 @@ TokenCollector::visit (TypeAlias &type_alias) void TokenCollector::visit (StructStruct &struct_item) { + visit_items_as_lines (struct_item.get_outer_attrs ()); if (struct_item.has_visibility ()) visit (struct_item.get_visibility ()); auto struct_name = struct_item.get_identifier (); @@ -1843,6 +1849,7 @@ TokenCollector::visit (StructStruct &struct_item) void TokenCollector::visit (TupleStruct &tuple_struct) { + visit_items_as_lines (tuple_struct.get_outer_attrs ()); auto struct_name = tuple_struct.get_identifier (); tokens.push_back (Rust::Token::make (STRUCT_TOK, tuple_struct.get_locus ())); tokens.push_back ( @@ -1862,6 +1869,7 @@ TokenCollector::visit (TupleStruct &tuple_struct) void TokenCollector::visit (EnumItem &item) { + visit_items_as_lines (item.get_outer_attrs ()); auto id = item.get_identifier (); tokens.push_back ( Rust::Token::make_identifier (item.get_locus (), std::move (id))); @@ -1901,6 +1909,7 @@ TokenCollector::visit (EnumItemDiscriminant &item) void TokenCollector::visit (Enum &enumeration) { + visit_items_as_lines (enumeration.get_outer_attrs ()); if (enumeration.has_visibility ()) visit (enumeration.get_visibility ()); tokens.push_back (Rust::Token::make (ENUM_TOK, enumeration.get_locus ())); @@ -1936,6 +1945,7 @@ TokenCollector::visit (Union &union_item) void TokenCollector::visit (ConstantItem &item) { + visit_items_as_lines (item.get_outer_attrs ()); tokens.push_back (Rust::Token::make (CONST, item.get_locus ())); if (item.is_unnamed ()) { @@ -1960,6 +1970,7 @@ TokenCollector::visit (ConstantItem &item) void TokenCollector::visit (StaticItem &item) { + visit_items_as_lines (item.get_outer_attrs ()); tokens.push_back (Rust::Token::make (STATIC_TOK, item.get_locus ())); if (item.is_mutable ()) tokens.push_back (Rust::Token::make (MUT, Location ())); @@ -2112,6 +2123,7 @@ TokenCollector::visit (Trait &trait) void TokenCollector::visit (InherentImpl &impl) { + visit_items_as_lines (impl.get_outer_attrs ()); tokens.push_back (Rust::Token::make (IMPL, impl.get_locus ())); // FIXME: Handle generics @@ -2128,6 +2140,7 @@ TokenCollector::visit (InherentImpl &impl) void TokenCollector::visit (TraitImpl &impl) { + visit_items_as_lines (impl.get_outer_attrs ()); tokens.push_back (Rust::Token::make (IMPL, impl.get_locus ())); visit (impl.get_trait_path ()); tokens.push_back (Rust::Token::make (FOR, Location ())); @@ -2202,6 +2215,7 @@ TokenCollector::visit (ExternalFunctionItem &function) void TokenCollector::visit (ExternBlock &block) { + visit_items_as_lines (block.get_outer_attrs ()); tokens.push_back (Rust::Token::make (EXTERN_TOK, block.get_locus ())); if (block.has_abi ()) |