diff options
author | Charalampos Mitrodimas <charmitro@gmail.com> | 2023-06-03 18:09:26 +0000 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 18:46:24 +0100 |
commit | d4ac20b6b426f92d536806ecbb05722570a2e605 (patch) | |
tree | b0ca525a699687f902c3a2db273c58ab51d1dcb6 /gcc | |
parent | 446c19201459ed73bc100b4844e8ecccee5bfe2e (diff) | |
download | gcc-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.cc | 29 |
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 |