March 25, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7763

           Summary: No template instantiation backtrace printed trying to
                    use writefln on a const or immutable object reference
           Product: D
           Version: D2
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Keywords: diagnostic
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: smjg@iname.com


--- Comment #0 from Stewart Gordon <smjg@iname.com> 2012-03-24 17:52:11 PDT ---
DMD 2.058, Win32
----------
import std.stdio;

class Set(Element) {
    void show(Element e) {
        writefln("%s", e);
    }
}

void main() {
    Set!(const(Object)) set2;
}
----------
C:\Users\Stewart\Documents\Programming\D\Tests\bugs>dmd hashset1.d
d:\dmd2\windows\bin\..\..\src\phobos\std\format.d(1858): Error: template
instance formatObject!(LockingTextWriter,const(Object),char)
formatObject!(LockingTextWriter,const(Object),char) does not match template
declaration formatObject(Writer,T,Char) if (hasToString!(T,Char))
----------

main instantiates Set
Set instantiates writefln
writefln instantiates File.writefln
File.writefln instantiates formatGeneric
formatGeneric instantiates formatValue
formatValue tries to instantiates formatObject but fails

Despite this chain of template instantiations, no backtrace is printed. Consequently, it took me ages to find what in my code was triggering it in order to produce this reduced testcase.

Fixing issue 1824 will invalidate this testcase, but won't fix the underyling compiler bug, which could potentially bite in other ways.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
December 27, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7763


Andrej Mitrovic <andrej.mitrovich@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |andrej.mitrovich@gmail.com
         Resolution|                            |FIXED


--- Comment #1 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2012-12-26 16:28:09 PST ---
Seems fixed in 2.060:

--------
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\format.d(2158): Error: template
instance formatObject!(LockingTextWriter,const(Object),char)
formatObject!(LockingTextWriter,const(Object),char) does not match template
declaration formatObject(Writer,T,Char) if (hasToString!(T,Char))
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\format.d(2158): Error: function
expected before (), not formatObject!(LockingTextWriter,const(Object),char) of
type void
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\format.d(2572): Error: template
instance std.format.formatValue!(LockingTextWriter,const(Object),char) error
instantiating
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\format.d(398):        instantiated
from here: formatGeneric!(LockingTextWriter,const(Object),char)
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(728):        instantiated
from here: formattedWrite!(LockingTextWriter,char,const(Object))
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(1711):        instantiated
from here: writefln!(string,const(Object))
test.d(5):        instantiated from here: writefln!(string,const(Object))
test.d(10):        instantiated from here: Set!(const(Object))
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\format.d(398): Error: template
instance std.format.formatGeneric!(LockingTextWriter,const(Object),char) error
instantiating
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(728):        instantiated
from here: formattedWrite!(LockingTextWriter,char,const(Object))
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(1711):        instantiated
from here: writefln!(string,const(Object))
test.d(5):        instantiated from here: writefln!(string,const(Object))
test.d(10):        instantiated from here: Set!(const(Object))
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(728): Error: template
instance std.format.formattedWrite!(LockingTextWriter,char,const(Object)) error
instantiating
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(1711):        instantiated
from here: writefln!(string,const(Object))
test.d(5):        instantiated from here: writefln!(string,const(Object))
test.d(10):        instantiated from here: Set!(const(Object))
D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(1711): Error: template
instance std.stdio.File.writefln!(string,const(Object)) error instantiating
test.d(5):        instantiated from here: writefln!(string,const(Object))
test.d(10):        instantiated from here: Set!(const(Object))
test.d(5): Error: template instance std.stdio.writefln!(string,const(Object))
error instantiating
test.d(10):        instantiated from here: Set!(const(Object))
test.d(10): Error: template instance test.Set!(const(Object)) error
instantiating
--------

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------