]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: token: Add type hints to string dump
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Mon, 27 Mar 2023 13:41:47 +0000 (15:41 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:28:42 +0000 (18:28 +0100)
The conversion to string of any known type literal was not giving back
any type hint, not even quotes for string. This commit fix this.

gcc/rust/ChangeLog:

* lex/rust-token.cc (Token::as_string): Add type hint output.

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

index a99593ae686fe8aa84a7adb663bd8b9d586ae8f8..e5397067b8ad16657fcbfd6f436a98e79a6a526b 100644 (file)
@@ -137,7 +137,31 @@ Token::as_string () const
 {
   if (should_have_str ())
     {
-      return get_str ();
+      switch (get_id ())
+       {
+       case STRING_LITERAL:
+         return "\"" + get_str () + "\"";
+       case BYTE_STRING_LITERAL:
+         return "b\"" + get_str () + "\"";
+       case CHAR_LITERAL:
+         return "'" + get_str () + "'";
+       case BYTE_CHAR_LITERAL:
+         return "b'" + get_str () + "'";
+       case LIFETIME:
+         return "''" + get_str ();
+       case INT_LITERAL:
+         if (get_type_hint () == CORETYPE_UNKNOWN)
+           return get_str ();
+         else
+           return get_str () + get_type_hint_str ();
+       case FLOAT_LITERAL:
+         if (get_type_hint () == CORETYPE_UNKNOWN)
+           return get_str ();
+         else
+           return get_str () + get_type_hint_str ();
+       default:
+         return get_str ();
+       }
     }
   else
     {