Bug 13583 – Inconsistent naming of template arguments in debug symbols
Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Windows
Creation time
2014-10-07T07:38:00Z
Last change time
2015-02-18T03:38:19Z
Keywords
pull, symdeb
Assigned to
nobody
Creator
r.sagitario
Comments
Comment #0 by r.sagitario — 2014-10-07T07:38:43Z
Compiling this code:
///////////
class Token
{
string text;
}
class DList(T)
{
T x;
}
void replaceToken(DList!(Token) tokens)
{
}
void main()
{
replaceToken(null);
}
////////////
with "dmd -g -m64 testcv.d" for win64, then dumping the debug info:
"diadump testcv.exe >dia" yields
...
Function : static, [00001080][0001:00000080], len = 0000000A, testcv.replaceToken
Function attribute:
Function info:
FuncDebugStart : static, [00001088][0001:00000088]
FuncDebugEnd : static, [00001088][0001:00000088]
Data : rbp Relative, [00000010], Param, Type: class testcv.DList!(Token).DList *, tokens
...
UserDefinedType: testcv.DList!(testcv.Token).DList
BaseClass : object.Object, offset = 0x0
Data : this+0x10, Member, Type: class testcv.Token *, x
UserDefinedType: testcv.DList!(Token).DList
UserDefinedType: _M128A
...
So, the function argument type is referred to as "testcv.DList!(Token).DList", while the full type description is "testcv.DList!(testcv.Token).DList".
The full qualification of template arguments is sometimes missing.