is this a dmd bug ?

Steven Schveighoffer schveiguy at yahoo.com
Tue Nov 24 04:54:59 PST 2009


On Tue, 24 Nov 2009 07:38:51 -0500, Long Chang <changedalone at gmail.com>  
wrote:

> how about this case:
>
>
> public interface Listener {
>     void handleEvent (int);
> }
>
> class Test{
>     this(){
>         Listener listener    = new class() Listener {
>             public void handleEvent(int evt) {
>                 toString(evt);
>             }
>         };
>     }
>
>     void toString(int evt){
>
>     }
> }
>
> void main(){
>
> }
>
> ---------------------------------------
> x.d(17): Error: function object.Object.toString () does not match  
> parameter
> types (int)
> x.d(17): Error: expected 0 arguments, not 1 for non-variadic function  
> type
> char[]()

Try outer.toString(evt).

Note that the anonymous class inherits from Object, which defines toString  
as:

char[] toString();

So the compiler thinks you are trying to call your anonymous class'  
toString, not the outer class' toString.

-Steve



More information about the Digitalmars-d mailing list