diff options
author | Erik Pilkington <erik.pilkington@gmail.com> | 2018-08-02 17:45:01 +0000 |
---|---|---|
committer | Erik Pilkington <erik.pilkington@gmail.com> | 2018-08-02 17:45:01 +0000 |
commit | 1839f48cee24173f2cc06120778b2920dd2b257a (patch) | |
tree | 1c8fcdbdac30405c84da198c7068e9f5ef276944 | |
parent | f74c74842402fcfdf341d2e39a825b5977c1a434 (diff) |
[itanium demangler] Support dot suffixes on block invocation functions
rdar://32378759
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@338747 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | src/cxa_demangle.cpp | 2 | ||||
-rw-r--r-- | test/test_demangle.pass.cpp | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/cxa_demangle.cpp b/src/cxa_demangle.cpp index 1007d7e..3a7ee06 100644 --- a/src/cxa_demangle.cpp +++ b/src/cxa_demangle.cpp @@ -4935,6 +4935,8 @@ Node *Db::parse() { bool RequireNumber = consumeIf('_'); if (parseNumber().empty() && RequireNumber) return nullptr; + if (look() == '.') + First = Last; if (numLeft() != 0) return nullptr; return make<SpecialName>("invocation function for block in ", Encoding); diff --git a/test/test_demangle.pass.cpp b/test/test_demangle.pass.cpp index 305e179..7c1fd2d 100644 --- a/test/test_demangle.pass.cpp +++ b/test/test_demangle.pass.cpp @@ -29753,6 +29753,8 @@ const char* cases[][2] = // reference collapsing: {"_Z1fIR1SEiOT_", "int f<S&>(S&)"}, {"_Z1fIJR1SS0_EEiDpOT_", "int f<S&, S>(S&, S&&)"}, + + {"___Z3foo_block_invoke.25", "invocation function for block in foo"}, }; const unsigned N = sizeof(cases) / sizeof(cases[0]); |