[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