std.demangle.demangle()

Andrew via Digitalmars-d digitalmars-d at puremagic.com
Thu Mar 10 13:56:07 PST 2016


Hi,

I tried posting this to the Phobos list but it failed!

I've been writing a tool that requires me to demangle D mangled 
names.  To check it I've been running the tool on its self 
including its mangled names (that I get from the profiler).  I've 
discovered that std.demangle.demangle() cannot demangle these 
mangled names:

_Dmain

_D3std5array18__T8AppenderTAAyaZ8Appender12__T3putTAyaZ3putMFAyaZ9__lambda2MFNaNbNiNeZAAya
    
_D4hash115__T4hashTAaTS17indexing_postings56__T17indexing_postingsVE17indexing_postings9attributei7Z17indexing_postingsVii24Z4hash6__ctorMFNbNiC9allocator9allocatorZC4hash115__T4hashTAaTS17indexing_postings56__T17indexing_postingsVE17indexing_postings9attributei7Z17indexing_postingsVii24Z4hash

_D4hash115__T4hashTAaTS17indexing_postings56__T17indexing_postingsVE17indexing_postings9attributei7Z17indexing_postingsVii24Z4hash7opIndexMFNcKxAaZS17indexing_postings56__T17indexing_postingsVE17indexing_postings9attributei7Z17indexing_postings

The first one is obvious (_Dmain is not mangled).

To verify these were correctly mangled I wrote a name demangler 
based on the grammar on the D web site (that grammar appears to 
be incorrect for structs, and does not include cent and ucent).

Based on my new-found knowledge of how name mangling and 
demangling works I'm about to try and debug 
std.demangle.demangle().

If someone can tell me that this bug has been fixed it'll save me 
a day of work.  If not then I'll post a patch once (if?) I've 
found the bug.

Andrew.




More information about the Digitalmars-d mailing list