[Issue 18912] [REG 2.080 git] "switch skips declaration" of foreach variable
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Sun May 27 20:59:33 UTC 2018
    
    
  
https://issues.dlang.org/show_bug.cgi?id=18912
--- Comment #2 from JR <zorael at gmail.com> ---
I see. The code was naturally heavily reduced.
I have up until now been using the foreach without any issues, though mostly
indexing the .tupleof directly to access the underlying symbol rather than
using the member variable. I only use member once with std.traits.isType.
https://github.com/zorael/kameloso/blob/f4617a5e5c796fcc9797e1f556b0861f44930f40/source/kameloso/config.d#L519
Slightly less reduced:
---
thingloop:
foreach (immutable i, thing; things)
{
    switch (hits["entry"])
    {
        foreach (immutable n, ref member; things[i].tupleof)
        {
            static if (!isType!member &&
                !hasUDA!(Things[i].tupleof[n], Unconfigurable))
            {
                enum memberstring = __traits(identifier,
                    Things[i].tupleof[n]);
                case memberstring:
                    things[i].setMemberByName(hits["entry"],
                        hits["value"]);
                    continue thingloop;
            }
        }
    default:
        // Unknown setting in known section
        invalidEntries[section] ~= hits["entry"].length ? hits["entry"] : line;
        break;
    }
}
---
Thanks, I will try your other approaches.
--
    
    
More information about the Digitalmars-d-bugs
mailing list