aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libiberty/ChangeLog7
-rw-r--r--libiberty/d-demangle.c4
-rw-r--r--libiberty/testsuite/d-demangle-expected4
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)
#