diff options
author | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2021-05-14 00:00:00 +0000 |
---|---|---|
committer | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2021-05-15 09:47:17 +0200 |
commit | fc0f2bb91d01963647392cbba1fe37a6f2d9f3bf (patch) | |
tree | 8735c1b95d1f059c3881647682fdcf8b3b2510b6 /llvm/lib/Demangle/RustDemangle.cpp | |
parent | dbf8cc7b6625ed3547e49b2faecdde3337b1ea6d (diff) | |
download | llvm-fc0f2bb91d01963647392cbba1fe37a6f2d9f3bf.zip llvm-fc0f2bb91d01963647392cbba1fe37a6f2d9f3bf.tar.gz llvm-fc0f2bb91d01963647392cbba1fe37a6f2d9f3bf.tar.bz2 |
[Demangle][Rust] Parse bool constants
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D102518
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'); |