From: Pierre-Emmanuel Patry Date: Thu, 23 Mar 2023 15:45:35 +0000 (+0100) Subject: gccrs: ast: Add ExternCrate TokenStream visitor X-Git-Tag: basepoints/gcc-15~2718 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=01886152b67c6458ae40cbb2c560dcbb6af1ba95;p=thirdparty%2Fgcc.git gccrs: ast: Add ExternCrate TokenStream visitor Add a visitor implementation for ExternCrate declarations. gcc/rust/ChangeLog: * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor. Signed-off-by: Pierre-Emmanuel Patry --- diff --git a/gcc/rust/ast/rust-ast-tokenstream.cc b/gcc/rust/ast/rust-ast-tokenstream.cc index 8dae3e57e673..f5d04450dbc6 100644 --- a/gcc/rust/ast/rust-ast-tokenstream.cc +++ b/gcc/rust/ast/rust-ast-tokenstream.cc @@ -1568,8 +1568,22 @@ TokenStream::visit (Module &module) } void -TokenStream::visit (ExternCrate &) -{} +TokenStream::visit (ExternCrate &crate) +{ + 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 (); + tokens.push_back ( + Rust::Token::make_identifier (Location (), std::move (ref))); + if (crate.has_as_clause ()) + { + auto as_clause = crate.get_as_clause (); + tokens.push_back (Rust::Token::make (AS, Location ())); + tokens.push_back ( + Rust::Token::make_identifier (Location (), std::move (as_clause))); + } + tokens.push_back (Rust::Token::make (SEMICOLON, Location ())); +} void TokenStream::visit (UseTreeGlob &)