opDispatch returning this not working in a hierarchy

Daniel Murphy yebblies at nospamgmail.com
Wed Feb 1 20:23:02 PST 2012


There are some issues with mixing opDispatch and property syntax.  Try:
base.items().printValue( true );

This list is not for posting bug reports, it's just for bugzilla issues. 
Please post this kind of thing to d.learn or open a bug report at 
http://d.puremagic.com/issues/

"Daniel L. Alves" <daniel_lopes_alves at hotmail.com> wrote in message 
news:jgd1oj$2r04$1 at digitalmars.com...
> Hi,
> I don't know if this is really a bug or some gotcha of the language that I
> don't get. I'm sorry if it happens to be the later.
>
> When I run this simple program
>
> class DispatchBase
> {
>    auto opDispatch( string m, Args... )( Args  args )
>    {
>        writefln( "Tried to call %s", m );
>        return this;
>    }
> }
>
> class DispatchDerived : DispatchBase
> {
>    void printValue( T )( T value )
>    {
>        writefln( "Value is %s", value );
>    }
> }
>
> void main()
> {
>    DispatchBase base = new DispatchDerived();
>    base.items.printValue( true );
> }
>
> I receive this output
>
> Tried to call items
> Tried to call printValue
>
> But what I was expecting is
>
> Tried to call items
> Value is true
>
> After all, opDispatch returns 'this'. The interesting thing is that when I
> move opDispatch up to DispatchDerived, everything works fine. It's like 
> 'this'
> inside opDispatch didn't recognize its real type when in a base class.
>
> Hope you can help me.
> Daniel 




More information about the Digitalmars-d-bugs mailing list