]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: tokenstream: Add tokens to Ident conversion
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Thu, 27 Apr 2023 15:33:35 +0000 (17:33 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:37:16 +0000 (18:37 +0100)
Add conversion from a rust token to tokenstream Idents.

gcc/rust/ChangeLog:

* ast/rust-ast-tokenstream.cc (TokenStream::collect): Add Ident
conversion.

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

index faafac4e14b30d858a7157d7d585b221a9f28615..7a28634b60abc189499dd1a68bda5ea163fc1fdf 100644 (file)
@@ -50,6 +50,66 @@ TokenStream::collect () const
     {
       switch (token->get_id ())
        {
+       // Ident
+       case IDENTIFIER:
+       case ABSTRACT:
+       case AS:
+       case ASYNC:
+       case AUTO:
+       case BECOME:
+       case BOX:
+       case BREAK:
+       case CONST:
+       case CONTINUE:
+       case CRATE:
+       case DO:
+       case DYN:
+       case ELSE:
+       case ENUM_TOK:
+       case EXTERN_TOK:
+       case FINAL_TOK:
+       case FN_TOK:
+       case FOR:
+       case IF:
+       case IMPL:
+       case IN:
+       case LET:
+       case LOOP:
+       case MACRO:
+       case MATCH_TOK:
+       case MOD:
+       case MOVE:
+       case MUT:
+       case OVERRIDE_TOK:
+       case PRIV:
+       case PUB:
+       case REF:
+       case RETURN_TOK:
+       case SELF_ALIAS:
+       case SELF:
+       case STATIC_TOK:
+       case STRUCT_TOK:
+       case SUPER:
+       case TRAIT:
+       case TRY:
+       case TYPE:
+       case TYPEOF:
+       case UNSAFE:
+       case UNSIZED:
+       case USE:
+       case VIRTUAL:
+       case WHERE:
+       case WHILE:
+       case YIELD:
+       // Underscore is not a Punct, considered as an Ident
+       case UNDERSCORE:
+       // True and false are idents, not literals
+       // (https://doc.rust-lang.org/proc_macro/struct.Literal.html)
+       case FALSE_LITERAL:
+       case TRUE_LITERAL:
+         trees.back ().push (ProcMacro::TokenTree::make_tokentree (
+           ProcMacro::Ident::make_ident (token->as_string ())));
+         break;
        // Joint punct
        case OR:
        case PIPE_EQ: