diff mbox

[2/3,D] libiberty: Fix demangling of D-style variadic functions

Message ID CABOHX+e=P3V_Xgg6vaSp4kPBuVioHh3EZ_UVDJNYoByh1fa34w@mail.gmail.com
State New
Headers show

Commit Message

Iain Buclaw Jan. 27, 2016, 12:36 a.m. UTC
This one fixes support for D-style variadic functions, specifically
where non-variadic parameters can be omitted entirely.

Iain

Comments

Ian Lance Taylor Jan. 27, 2016, 12:41 a.m. UTC | #1
On Tue, Jan 26, 2016 at 4:36 PM, Iain Buclaw <ibuclaw@gdcproject.org> wrote:
> This one fixes support for D-style variadic functions, specifically
> where non-variadic parameters can be omitted entirely.

This is OK.

Thanks.

Ian
diff mbox

Patch

---
libiberty/

 2016-01-26  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.

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)
 #