mixin break; in switch containing static foreach

Alex sascha.orlov at gmail.com
Tue Apr 3 19:41:54 UTC 2018


On Tuesday, 3 April 2018 at 19:31:50 UTC, Vladimirs Nordholm 
wrote:
> My base problem is that I want to mixin `break` into a switch 
> statement, but the mixin is within a static foreach. Take a 
> look at the following code:
>
>     switch(foo)
>     {
>         static foreach(f; EnumMembers!Foo)
>         {
>             mixin(format("
>                 case Foo.%s:    bar = Bar.%s;    break;
>             ", f, f));
>         }
>
>         default: /* do stuff */; break;
>     }
>
> The above code returns the error "Error: must use labeled 
> `break` within `static foreach`". For a more complete example, 
> take a look att this sample code: 
> https://dpaste.dzfl.pl/f3ab6d9679fc
>
> I also attempted this solution, but I got the error that the 
> label didn't exist. (And it looks pretty ugly)
>
>     mixin(format("%s: case Foo.%s: abc = Foo.X%s; break %s;", 
> f, f, f, f));
>
> Any of you have a solution for this problem?
>
> Best regards,
> Vladimirs Nordholm

Would labelling help?
https://run.dlang.io/is/vE1KyD



More information about the Digitalmars-d-learn mailing list