[Issue 20275] Tuple created in template in with() includes with-symbol
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Nov 3 23:15:26 UTC 2019
https://issues.dlang.org/show_bug.cgi?id=20275
Basile-z <b2.temp at gmx.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |b2.temp at gmx.com
--- Comment #1 from Basile-z <b2.temp at gmx.com> ---
little more clear:
---
enum E { A }
alias GlobalEnumMembers(T) = __traits(allMembers, T);
void main()
{
pragma(msg, GlobalEnumMembers!E.stringof);
with (S())
{
pragma(msg, EnumMembers!E.stringof); // (*__withSym).tuple("A")
}
}
struct S
{
alias EnumMembers = GlobalEnumMembers;
}
---
so "(*__withSym)" is just a `S` and ".tuple("A")" the member tuple, i.e the
alias.While this is distrurbing, I don't see a bug. This is like
---
enum E { A }
alias GlobalEnumMembers(T) = __traits(allMembers, T);
void main()
{
pragma(msg, GlobalEnumMembers!E.stringof);
S s;
{
pragma(msg, s.EnumMembers!E.stringof);
}
}
struct S
{
alias EnumMembers = GlobalEnumMembers;
}
---
which prints s.tuple("A").
The only thing is that `with(S())` creates a kind of anonymous/temp variable.
voting for close as invalid.
--
More information about the Digitalmars-d-bugs
mailing list