[PATCH] d-demangle: properly skip anonymous symbols
libiberty/ PR d/102618 * d-demangle.c (dlang_parse_qualified): Handle anonymous symbols correctly. * testsuite/d-demangle-expected: New tests to cover anonymous symbols.
This commit is contained in:
parent
5d4d64faa7
commit
fb5b077858
@ -1650,13 +1650,19 @@ dlang_parse_qualified (string *decl, const char *mangled,
|
||||
size_t n = 0;
|
||||
do
|
||||
{
|
||||
/* Skip over anonymous symbols. */
|
||||
if (*mangled == '0')
|
||||
{
|
||||
do
|
||||
mangled++;
|
||||
while (*mangled == '0');
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (n++)
|
||||
string_append (decl, ".");
|
||||
|
||||
/* Skip over anonymous symbols. */
|
||||
while (*mangled == '0')
|
||||
mangled++;
|
||||
|
||||
mangled = dlang_identifier (decl, mangled, info);
|
||||
|
||||
/* Consume the encoded arguments. However if this is not followed by the
|
||||
|
@ -1462,3 +1462,11 @@ mod.func().nested!(int).nested()
|
||||
--format=dlang
|
||||
_D6mangle__T8fun21753VSQv6S21753S1f_DQBj10__lambda71MFNaNbNiNfZvZQCbQp
|
||||
mangle.fun21753!(mangle.S21753(mangle.__lambda71())).fun21753
|
||||
#
|
||||
--format=dlang
|
||||
_D8demangle9anonymous0Z
|
||||
demangle.anonymous
|
||||
#
|
||||
--format=dlang
|
||||
_D8demangle9anonymous03fooZ
|
||||
demangle.anonymous.foo
|
||||
|
Loading…
Reference in New Issue
Block a user