The following code compiles fine for me with dmd 1.043:

----------
module wtf;

version(Tango)
        import tango.io.Stdout;
else
        import std.stdio;

interface Printer
{
        void print();
}

class WTF
{
        Printer p;
        
        this(int x)
        {
                p = new class Printer
                {
                        override void print()
                        {
                                version(Tango)
                                        Stdout(x).newline();
                                else
                                        writefln(x);
                        }
                };
        }
}

void main()
{
        WTF wtf = new WTF(42);
        wtf.p.print();
}
----------

The anonymous class is given a method that prints the int x, however, by the 
time wtf.p.print() is called, x has gone out of scope. It's still possible to 
call the print(), though, and it just prints garbage. Should this be a compiler 
error?

Reply via email to