https://issues.dlang.org/show_bug.cgi?id=20275

Basile-z <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #1 from Basile-z <[email protected]> ---
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.

--

Reply via email to