[Issue 21545] [dip1000] cannot assign ref returning delegate to variable with lower attributes
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Jan 13 22:59:45 UTC 2021
https://issues.dlang.org/show_bug.cgi?id=21545
--- Comment #2 from ag0aep6g <ag0aep6g at gmail.com> ---
(In reply to ag0aep6g from comment #1)
> int i;
> auto dg = delegate ref() @safe => i;
>
> alias DgFull = ref int delegate() pure nothrow @nogc @safe;
> alias DgAuto = typeof(dg);
>
> pragma(msg, DgFull); /* int delegate() pure nothrow @nogc ref @safe */
> pragma(msg, DgAuto); /* int delegate() pure nothrow @nogc ref @safe */
> pragma(msg, is(DgFull == DgAuto)); /* true; okay */
`DgAuto` actually also has the attributes`scope` and `return`, but they have a
special "inferred" marker. That means they're not printed.[1] Apparently, the
marker also has an effect on `is(X == Y)`. Still bizarre.
[1]
https://github.com/dlang/dmd/blob/f341be3de711f9dbb91011e3650f8afc3818ec25/src/dmd/mtype.d#L7131-L7134
--
More information about the Digitalmars-d-bugs
mailing list