diff options
author | Erik Pilkington <erik.pilkington@gmail.com> | 2019-01-17 21:37:51 +0000 |
---|---|---|
committer | Erik Pilkington <erik.pilkington@gmail.com> | 2019-01-17 21:37:51 +0000 |
commit | 43b8b584d3fc3cb706b1d2ccb2d6d0865f304b49 (patch) | |
tree | 1758256143a6224e333efb3e5a4e554863bd2794 | |
parent | 394048ed3592c116efa443326891e4afe226b534 (diff) |
[demangler] Support for block literals.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351482 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | src/demangle/ItaniumDemangle.h | 6 | ||||
-rw-r--r-- | test/test_demangle.pass.cpp | 2 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/demangle/ItaniumDemangle.h b/src/demangle/ItaniumDemangle.h index 9a54ff5..f35c062 100644 --- a/src/demangle/ItaniumDemangle.h +++ b/src/demangle/ItaniumDemangle.h @@ -2480,6 +2480,12 @@ AbstractManglingParser<Derived, Alloc>::parseUnnamedTypeName(NameState *) { return nullptr; return make<ClosureTypeName>(Params, Count); } + if (consumeIf("Ub")) { + (void)parseNumber(); + if (!consumeIf('_')) + return nullptr; + return make<NameType>("'block-literal'"); + } return nullptr; } diff --git a/test/test_demangle.pass.cpp b/test/test_demangle.pass.cpp index 09ba043..be0b7b0 100644 --- a/test/test_demangle.pass.cpp +++ b/test/test_demangle.pass.cpp @@ -29759,6 +29759,8 @@ const char* cases[][2] = // Darwin adds leading underscores to symbols, just demangle them anyways. {"____Z3foo_block_invoke.25", "invocation function for block in foo"}, {"__Z1fv", "f()"}, + + {"_Z2tfIZUb_E1SEiv", "int tf<'block-literal'::S>()"} }; const unsigned N = sizeof(cases) / sizeof(cases[0]); |