www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 7763] New: No template instantiation backtrace printed trying to use writefln on a const or immutable object reference

reply d-bugmail puremagic.com writes:
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



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: -------
Mar 24 2012
parent d-bugmail puremagic.com writes:
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



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: -------
Dec 26 2012