diff options
-rw-r--r-- | libiberty/ChangeLog | 7 | ||||
-rw-r--r-- | libiberty/d-demangle.c | 4 | ||||
-rw-r--r-- | libiberty/testsuite/d-demangle-expected | 4 |
3 files changed, 14 insertions, 1 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index aa1af40..88422c5 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,5 +1,12 @@ 2016-01-27 Iain Buclaw <ibuclaw@gdcproject.org> + * d-demangle.c (dlang_function_args): Append ',' for variadic functions + only if parameters were seen before the elipsis symbol. + * testsuite/d-demangle-expected: Add coverage test for parameter-less + variadic functions. + +2016-01-27 Iain Buclaw <ibuclaw@gdcproject.org> + * d-demangle.c (dlang_type): Handle function types only in the context of seeing a pointer type symbol. * testsuite/d-demangle-expected: Update function pointer tests. diff --git a/libiberty/d-demangle.c b/libiberty/d-demangle.c index 9c4d459..9e5a8043 100644 --- a/libiberty/d-demangle.c +++ b/libiberty/d-demangle.c @@ -399,7 +399,9 @@ dlang_function_args (string *decl, const char *mangled) return mangled; case 'Y': /* (variadic T t, ...) style. */ mangled++; - string_append (decl, ", ..."); + if (n != 0) + string_append (decl, ", "); + string_append (decl, "..."); return mangled; case 'Z': /* Normal function. */ mangled++; diff --git a/libiberty/testsuite/d-demangle-expected b/libiberty/testsuite/d-demangle-expected index 11785f2..8f0b167 100644 --- a/libiberty/testsuite/d-demangle-expected +++ b/libiberty/testsuite/d-demangle-expected @@ -342,6 +342,10 @@ _D8demangle4testFaaYv demangle.test(char, char, ...) # --format=dlang +_D8demangle4testFYv +demangle.test(...) +# +--format=dlang _D8demangle4testFaaZv demangle.test(char, char) # |