diff options
Diffstat (limited to 'llvm/lib/Demangle/RustDemangle.cpp')
-rw-r--r-- | llvm/lib/Demangle/RustDemangle.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/llvm/lib/Demangle/RustDemangle.cpp b/llvm/lib/Demangle/RustDemangle.cpp index 1bc9d47..3a9e75f 100644 --- a/llvm/lib/Demangle/RustDemangle.cpp +++ b/llvm/lib/Demangle/RustDemangle.cpp @@ -411,11 +411,14 @@ void Demangler::demangleConst() { case BasicType::USize: demangleConstInt(); break; + case BasicType::Bool: + demangleConstBool(); + break; case BasicType::Placeholder: print('_'); break; default: - // FIXME demangle backreferences, bool constants, and char constants. + // FIXME demangle backreferences and char constants. Error = true; break; } @@ -439,6 +442,19 @@ void Demangler::demangleConstInt() { } } +// <const-data> = "0_" // false +// | "1_" // true +void Demangler::demangleConstBool() { + StringView HexDigits; + parseHexNumber(HexDigits); + if (HexDigits == "0") + print("false"); + else if (HexDigits == "1") + print("true"); + else + Error = true; +} + // <undisambiguated-identifier> = ["u"] <decimal-number> ["_"] <bytes> Identifier Demangler::parseIdentifier() { bool Punycode = consumeIf('u'); |