[Issue 18912] New: [REG 2.080 git] "switch skips declaration" of foreach variable
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun May 27 11:35:10 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=18912
Issue ID: 18912
Summary: [REG 2.080 git] "switch skips declaration" of foreach
variable
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: normal
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: zorael at gmail.com
I have a function with a switch, with an inner foreach to generate cases based
on a template parameters .tupleof. It still works in 2.080.0 and even with
"dmd-nightly" on run.dlang.io, but not with dmd from git as of 180527.
---
struct Foo
{
string abc, def;
}
void applyConfiguration(Thing)(ref Thing thing)
{
switch ("asdf")
{
foreach (immutable n, ref member; thing.tupleof)
{
enum memberstring = __traits(identifier, Thing.tupleof[n]);
case memberstring:
// ...
break;
}
default:
break;
}
}
void main()
{
Foo foo;
applyConfiguration(foo);
}
---
> switch.d(8): Error: `switch` skips declaration of variable `switch.applyConfiguration!(Foo).applyConfiguration.member` at switch.d(11)
> switch.d(27): Error: template instance `switch.applyConfiguration!(Foo)` error instantiating
The offending commit is eabc6a62b1d2f5924637f1e61464b9a975341dd4, "fix Issue
18858 - switch 'skips declaration' test only checks last declaration".
Is this a regression or was my code always broken?
--
More information about the Digitalmars-d-bugs
mailing list