www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 501] New: Bad interaction between 'with' and IFTI in template methods

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=501

           Summary: Bad interaction between 'with' and IFTI in template
                    methods
           Product: D
           Version: 0.173
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: wbaxter gmail.com


You can't call a templatized method using IFTI inside a 'with' block.
The following code demonstrates.

------------------
import std.stdio : writefln;

class Penfold {
    char[] toString() { return "Krike!"; }
}
class Pinky {
    char[] toString() { return "Narf!"; }
}

class Printer {
    void vprint(Object obj) {
        writefln(obj.toString);
    }

    C print(C)(C obj) {
        writefln(obj);
        return obj;
    }

}

void main()
{
    Printer p = new Printer;
    p.print(new Pinky);
    p.print(new Penfold);
    with (p) {
        // ok
        vprint(new Pinky);
        vprint(new Penfold);
        // Ok
        print!(Pinky)(new Pinky);
        print!(Penfold)(new Penfold);
        // ok
        p.print(new Pinky);
        p.print(new Penfold);

        // error:  "type Printer is not an expression"   (??)
        print(new Pinky);
        print(new Penfold);
    }
}


-- 
Nov 13 2006
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=501


wbaxter gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED





Works for me now in DMD 0.176


-- 
Dec 02 2006