[gcc r14-7570] gccrs: tokenstream: Add tokens to Ident conversion

Arthur Cohen cohenarthur@gcc.gnu.org
Tue Jan 16 17:41:30 GMT 2024


https://gcc.gnu.org/g:8c465d5fb09d1c7769ba4d9ce641e3e7c261b528

commit r14-7570-g8c465d5fb09d1c7769ba4d9ce641e3e7c261b528
Author: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Date:   Thu Apr 27 17:33:35 2023 +0200

    gccrs: tokenstream: Add tokens to Ident conversion
    
    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>

Diff:
---
 gcc/rust/ast/rust-ast-tokenstream.cc | 60 ++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/gcc/rust/ast/rust-ast-tokenstream.cc b/gcc/rust/ast/rust-ast-tokenstream.cc
index faafac4e14b..7a28634b60a 100644
--- a/gcc/rust/ast/rust-ast-tokenstream.cc
+++ b/gcc/rust/ast/rust-ast-tokenstream.cc
@@ -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:


More information about the Gcc-cvs mailing list