Bug 6527 – Ambiguous mangling of inout parameters

Status
RESOLVED
Resolution
WONTFIX
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
Other
OS
All
Creation time
2011-08-18T09:26:00Z
Last change time
2017-04-14T16:42:00Z
Keywords
bootcamp
Assigned to
nobody
Creator
sean

Comments

Comment #0 by sean — 2011-08-18T09:26:16Z
An inout(T) function parameter is represented as "NgT" (ie. Wild T, per the ABI). 'N' is already used as the signifier for a FuncAttr, so this function: nothrow inout(int) fn(inout(int) x) { return x; } Is mangled as: 2fnFNbNgiZNgi Parsing this, I have to explicitly recognize "Ng" as not a FuncAttr but rather the beginning of an inout parameter type, rewind the parse location (admittedly by one char) and jump out of the FuncAttr parse loop to deal with it. Couldn't some other label be used to mark an inout parameter so this conflict doesn't exist? I guess TypeNewArray might have this same problem ("Ne") except that it isn't even used in D2 right now so I suppose that's a non-issue.
Comment #1 by r.sagitario — 2017-04-14T16:42:00Z
Two character manglings are common by now and no single character encodigs left, so the demangler should be able to look-ahead by the additional character (and mostly does).