Thread overview | ||||||
---|---|---|---|---|---|---|
|
January 13, 2021 [Issue 21545] [dip1000] cannot assign ref returning delegate to variable with lower attributes | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21545 Bolpat <qs.il.paperinik@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |rejects-valid CC| |qs.il.paperinik@gmail.com -- |
January 13, 2021 [Issue 21545] [dip1000] cannot assign ref returning delegate to variable with lower attributes | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21545 ag0aep6g <ag0aep6g@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ag0aep6g@gmail.com --- Comment #1 from ag0aep6g <ag0aep6g@gmail.com> --- Bizarre: void main() { 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 */ alias DgSafe = ref int delegate() @safe; pragma(msg, is(DgFull : DgSafe)); /* true; okay */ pragma(msg, is(DgAuto : DgSafe)); /* false; wat */ } -- |
January 13, 2021 [Issue 21545] [dip1000] cannot assign ref returning delegate to variable with lower attributes | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21545 --- Comment #2 from ag0aep6g <ag0aep6g@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 -- |
December 17, 2022 [Issue 21545] [dip1000] cannot assign ref returning delegate to variable with lower attributes | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21545 Iain Buclaw <ibuclaw@gdcproject.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P1 |P3 -- |
Copyright © 1999-2021 by the D Language Foundation