[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:
Luís Ferreira 2021-10-17 18:34:25 -04:00 committed by Jeff Law
parent 5d4d64faa7
commit fb5b077858
2 changed files with 18 additions and 4 deletions

View File

@ -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

View File

@ -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