]> gcc.gnu.org Git - gcc.git/commitdiff
gccrs: ast: Implement TokenStream visitor for meta nodes
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Wed, 22 Mar 2023 12:27:50 +0000 (13:27 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:28:40 +0000 (18:28 +0100)
Implement TokenStream visitor on some Meta container nodes.

gcc/rust/ChangeLog:

* ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement
visitors.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/ast/rust-ast-tokenstream.cc

index 92737fcece4b4ed8f894f665e9e68c2037e62944..a7fee13a1aeacc219b481c730e38c52ddc081b37 100644 (file)
@@ -349,7 +349,12 @@ TokenStream::visit (DelimTokenTree &delim_tok_tree)
 
 void
 TokenStream::visit (AttrInputMetaItemContainer &container)
-{}
+{
+  for (auto &item : container.get_items ())
+    {
+      visit (item);
+    }
+}
 
 void
 TokenStream::visit (IdentifierExpr &ident_expr)
@@ -724,16 +729,28 @@ TokenStream::visit (LiteralExpr &expr)
 }
 
 void
-TokenStream::visit (AttrInputLiteral &)
-{}
+TokenStream::visit (AttrInputLiteral &literal)
+{
+  tokens.push_back (Rust::Token::make (EQUAL, Location ()));
+  visit (literal.get_literal ());
+}
 
 void
-TokenStream::visit (MetaItemLitExpr &)
-{}
+TokenStream::visit (MetaItemLitExpr &item)
+{
+  auto lit = item.get_literal ();
+  visit (lit);
+}
 
 void
-TokenStream::visit (MetaItemPathLit &)
-{}
+TokenStream::visit (MetaItemPathLit &item)
+{
+  auto path = item.get_path ();
+  auto lit = item.get_literal ();
+  visit (path);
+  tokens.push_back (Rust::Token::make (COLON, item.get_locus ()));
+  visit (lit);
+}
 
 void
 TokenStream::visit (BorrowExpr &expr)
This page took 0.063711 seconds and 5 git commands to generate.