]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: tokenstream: Add string and byte string literals
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Thu, 27 Apr 2023 16:16:44 +0000 (18:16 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:37:16 +0000 (18:37 +0100)
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 <pierre-emmanuel.patry@embecosm.com>
gcc/rust/ast/rust-ast-tokenstream.cc

index 7a28634b60abc189499dd1a68bda5ea163fc1fdf..5442e1c042362a4719c9e0dbe707611b11804bd4 100644 (file)
@@ -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<uint8_t> data (str.begin (), str.end ());
+           trees.back ().push (ProcMacro::TokenTree::make_tokentree (
+             ProcMacro::Literal::make_byte_string (data)));
+         }
+         break;
        // Ident
        case IDENTIFIER:
        case ABSTRACT: