summaryrefslogtreecommitdiff
path: root/src/mir/dump.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2017-03-11 22:54:55 +0800
committerJohn Hodge <tpg@ucc.asn.au>2017-03-11 22:54:55 +0800
commit9540cf3642abaf41c8d4c89eaee8a0d72f2dcf1d (patch)
tree97a2661524e353d6a8c460fa2d23e927056ab1d2 /src/mir/dump.cpp
parent89b40c78c9e96a32043cb12380777a5ccd13a4a1 (diff)
downloadmrust-9540cf3642abaf41c8d4c89eaee8a0d72f2dcf1d.tar.gz
MIR Dump - Fix bad printing of byte string literals
Diffstat (limited to 'src/mir/dump.cpp')
-rw-r--r--src/mir/dump.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/mir/dump.cpp b/src/mir/dump.cpp
index f3dee478..eb74dc9e 100644
--- a/src/mir/dump.cpp
+++ b/src/mir/dump.cpp
@@ -9,6 +9,7 @@
#include <hir/visitor.hpp>
#include "mir.hpp"
#include "operations.hpp"
+#include <iomanip>
namespace {
@@ -208,7 +209,19 @@ namespace {
os << (ce.v ? "true" : "false");
),
(Bytes,
- os << "b\"" << ce << "\"";
+ os << ::std::hex << "b\"";
+ for(auto b : ce)
+ {
+ if( b == '\\' )
+ os << "\\\\";
+ else if( b == '"' )
+ os << "\\\"";
+ else if( ' ' <= b && b < 0x7F )
+ os << b;
+ else
+ os << "\\x" << ::std::setw(2) << ::std::setfill('0') << (int)b;
+ }
+ os << ::std::dec << "\"";
),
(StaticString,
os << "\"" << ce << "\"";