The next version of D adds a new `scope' function attribute. This adds support for demangling them.
---
commit 15a0592cf6403fccbf43f3c7dc44f7d22c0f3dfa Author: Iain Buclaw <ibuc...@gdcproject.org> Date: Sat Apr 15 11:15:41 2017 +0200 libiberty/ChangeLog: 2017-04-15 Iain Buclaw <ibuc...@gdcproject.org> * d-demangle.c (dlang_attributes): Handle scope attributes. * testsuite/d-demangle-expected: Add tests. diff --git a/libiberty/d-demangle.c b/libiberty/d-demangle.c index 12457f0..af7c63d 100644 --- a/libiberty/d-demangle.c +++ b/libiberty/d-demangle.c @@ -327,6 +327,10 @@ dlang_attributes (string *decl, const char *mangled) mangled++; string_append (decl, "return "); continue; + case 'l': /* scope */ + mangled++; + string_append (decl, "scope "); + continue; default: /* unknown attribute */ return NULL; diff --git a/libiberty/testsuite/d-demangle-expected b/libiberty/testsuite/d-demangle-expected index 04d39f4..57f7c52 100644 --- a/libiberty/testsuite/d-demangle-expected +++ b/libiberty/testsuite/d-demangle-expected @@ -330,6 +330,10 @@ _D8demangle4testFNkaZv demangle.test(return char) # --format=dlang +_D8demangle4testFNlaZv +demangle.test(char) +# +--format=dlang _D8demangle4testFaXv demangle.test(char...) # @@ -478,6 +482,26 @@ _D8demangle4testFNjNkDFNjZaZv demangle.test(return char() return delegate) # --format=dlang +_D8demangle4testFNlDFZaZv +demangle.test(char() delegate) +# +--format=dlang +_D8demangle4testFMDFZaZv +demangle.test(scope char() delegate) +# +--format=dlang +_D8demangle4testFDFNlZaZv +demangle.test(char() scope delegate) +# +--format=dlang +_D8demangle4testFMDFNlZaZv +demangle.test(scope char() scope delegate) +# +--format=dlang +_D8demangle4testFNlMDFNlZaZv +demangle.test(scope char() scope delegate) +# +--format=dlang _D8demangle4testFPFNaZaZv demangle.test(char() pure function) # @@ -534,6 +558,26 @@ _D8demangle4testFNjNkPFNjZaZv demangle.test(return char() return function) # --format=dlang +_D8demangle4testFNlPFZaZv +demangle.test(char() function) +# +--format=dlang +_D8demangle4testFMPFZaZv +demangle.test(scope char() function) +# +--format=dlang +_D8demangle4testFPFNlZaZv +demangle.test(char() scope function) +# +--format=dlang +_D8demangle4testFMPFNlZaZv +demangle.test(scope char() scope function) +# +--format=dlang +_D8demangle4testFNlMPFNlZaZv +demangle.test(scope char() scope function) +# +--format=dlang _D8demangle4test6__initZ demangle.test.init$ #