[Issue 18451] [REG 2.076.1] In certain circumstances, calling remove on an array of delegates fails

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Feb 17 15:21:44 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=18451

--- Comment #3 from ArturG <var.spool.mail700 at gmail.com> ---
(In reply to ArturG from comment #2)
> its actually not only remove this fail also:
>     
>     void delegate(void*) dg = delegate(void*){ writeln("test"); };
>     void delegate(void*) dg2;
>     void delegate(void*)[] dgs = [dg,dg,dg,dg];
>     //pragma(msg, isInputRange!(typeof(dgs)));
>     //assert(isInputRange!(typeof(dgs)));
>     dgs.writeln;
>     void delegate(void*)[] dgs2 = [null, null, null, null];
>     //moveAll(dgs, dgs2);
>     //move(dgs.front, dgs2.front);
>     move(dg, dg2);
>     dg2(null);
> 
> and this actually works:
>     void delegate(void*) dg = delegate(void*){ writeln("test"); };
>     void delegate(void*) dg2;
>     void delegate(void*)[] dgs = [dg,dg,dg,dg];
>     void delegate(void*)[] dgs2 = [null, null, null, null];
>     dgs.writeln;
>     moveAll(dgs, dgs2);
>     move(dgs.front, dgs2.front);
>     move(dg, dg2);
>     dg2(null);

another example:

    void delegate(void*) dg = delegate(void*){ writeln("test"); };
    void delegate(void*) dg2;
    void delegate(void*)[] dgs = [dg,dg,dg,dg];

    //dgs.writeln; // fails
    auto s = "%(%s %)".format(dgs); // fails
    void delegate(void*)[] dgs2 = [null, null, null, null];
    //dgs.writeln; works
    //auto s = "%(%s %)".format(dgs); // works
    moveAll(dgs, dgs2);
    move(dgs.front, dgs2.front);
    move(dg, dg2);
    dg2(null);

--


More information about the Digitalmars-d-bugs mailing list