From: Pierre-Emmanuel Patry Date: Thu, 27 Apr 2023 16:16:44 +0000 (+0200) Subject: gccrs: tokenstream: Add string and byte string literals X-Git-Tag: basepoints/gcc-15~2568 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e9ced4a3a581fd06e9bd6c8862a53607b4395f34;p=thirdparty%2Fgcc.git gccrs: tokenstream: Add string and byte string literals Add conversion to tokenstream Literals for string and byte strings. gcc/rust/ChangeLog: * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add conversion for byte string and string. 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 7a28634b60ab..5442e1c04236 100644 --- a/gcc/rust/ast/rust-ast-tokenstream.cc +++ b/gcc/rust/ast/rust-ast-tokenstream.cc @@ -50,6 +50,22 @@ TokenStream::collect () const { switch (token->get_id ()) { + // Literals + case CHAR_LITERAL: // TODO: UTF-8 handling + trees.back ().push (ProcMacro::TokenTree::make_tokentree ( + ProcMacro::Literal::make_char (token->as_string ()[0]))); + break; + case STRING_LITERAL: + trees.back ().push (ProcMacro::TokenTree::make_tokentree ( + ProcMacro::Literal::make_string (token->as_string ()))); + break; + case BYTE_STRING_LITERAL: { + auto str = token->as_string (); + std::vector data (str.begin (), str.end ()); + trees.back ().push (ProcMacro::TokenTree::make_tokentree ( + ProcMacro::Literal::make_byte_string (data))); + } + break; // Ident case IDENTIFIER: case ABSTRACT: