[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