[Issue 7835] switch case fallthrough error despite a break inside	static foreach
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Fri Apr  6 11:36:23 PDT 2012
    
    
  
http://d.puremagic.com/issues/show_bug.cgi?id=7835
--- Comment #6 from Dmitry Olshansky <dmitry.olsh at gmail.com> 2012-04-06 11:37:01 PDT ---
(In reply to comment #5)
> This compiles with no warnings and it seems to work correctly, but I don't
> fully understand it:
> 
> 
> import core.stdc.stdio: printf;
> template TypeTuple(TList...) {
>     alias TList TypeTuple;
> }
> void main() {
>     char c = 'b';
>     MySwitch: switch (c) {
>         case 'a': printf("1 a\n"); break;
>         foreach (o; TypeTuple!('b', 'c')) {
>             case o: printf("2 %c\n", c); break;
>         }
>         break;
>         default: printf("default");
>     }
> }
> 
> 
> Is it correct? if the break inside here is meant to be the foreach break:
Yes.
> { case o: printf("2 %c\n", c); break; }
No it's {case 0: printf("2 %c\n", c); }
the break did his job already, it can't work twice.
> 
> Then why a single break is enough after:
> 
>         foreach (o; TypeTuple!('b', 'c')) {
>             case o: printf("2 %c\n", c); break;
>         }
Then the code below gives you one break after that statement.
>         break;
> 
> despite the foreach synthesizes more than one switch case?
foreach synthesizes exactly one statement here.
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
    
    
More information about the Digitalmars-d-bugs
mailing list