aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorCharalampos Mitrodimas <charmitro@gmail.com>2023-06-03 18:09:26 +0000
committerArthur Cohen <arthur.cohen@embecosm.com>2024-01-16 18:46:24 +0100
commitd4ac20b6b426f92d536806ecbb05722570a2e605 (patch)
treeb0ca525a699687f902c3a2db273c58ab51d1dcb6 /gcc
parent446c19201459ed73bc100b4844e8ecccee5bfe2e (diff)
downloadgcc-d4ac20b6b426f92d536806ecbb05722570a2e605.zip
gcc-d4ac20b6b426f92d536806ecbb05722570a2e605.tar.gz
gcc-d4ac20b6b426f92d536806ecbb05722570a2e605.tar.bz2
gccrs: ast: dump literals correctly
This commit fixes printing of literals based on their type. Previous implementation printed literals the same, regardless their type. Now we are printing: * int, float, bool don't require special printing * char -> '<char>' * string -> "<string>" * byte -> b'<byte>' * byte_string -> b"<byte_string>" gcc/rust/ChangeLog: * ast/rust-ast-dump.cc (Dump::visit): print literals based on their type. Signed-off-by: Charalampos Mitrodimas <charmitro@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/ast/rust-ast-dump.cc29
1 files changed, 28 insertions, 1 deletions
diff --git a/gcc/rust/ast/rust-ast-dump.cc b/gcc/rust/ast/rust-ast-dump.cc
index f44bb07..d486b1d 100644
--- a/gcc/rust/ast/rust-ast-dump.cc
+++ b/gcc/rust/ast/rust-ast-dump.cc
@@ -507,7 +507,34 @@ Dump::visit (QualifiedPathInType &path)
void
Dump::visit (LiteralExpr &expr)
{
- stream << expr.as_string ();
+ switch (expr.get_lit_type ())
+ {
+ case Literal::CHAR:
+ stream << "'" << expr.as_string () << "'";
+ return;
+
+ case Literal::STRING:
+ stream << "\"" << expr.as_string () << "\"";
+ return;
+
+ case Literal::BYTE:
+ stream << "b'" << expr.as_string () << "'";
+ return;
+
+ case Literal::BYTE_STRING:
+ stream << "b\"" << expr.as_string () << "\"";
+ return;
+
+ case Literal::INT:
+ case Literal::FLOAT:
+ case Literal::BOOL:
+ stream << expr.as_string ();
+ return;
+
+ case Literal::ERROR:
+ stream << "/*ERROR*/";
+ return;
+ }
}
void