void main() { int c; switch (c) { case 1,2: case 3,4: break; default: break; } } Compile with warnings on, DMD v2.054: tt.d(12): Error: switch case fallthrough - use 'goto case;' if intended This warning is wrong. For comparison, the equivalent code without CaseRanges passes even with warnings on: void main() { int c; switch (c) { case 1: case 2: break; default: break; } }
Compiles on 2.059
No, it does not. Check again with the correct compiler options. (you need -w)
Allright, I overlooked your comment.
https://github.com/D-Programming-Language/dmd/pull/1673
The code is not valid per the current spec. http://dlang.org/statement.html#SwitchStatement CaseStatement: case ArgumentList : ScopeStatementList ScopeStatementList: StatementListNoCaseNoDefault StatementListNoCaseNoDefault: StatementNoCaseNoDefault StatementNoCaseNoDefault StatementListNoCaseNoDefault By this spec, case 1,2: case 3,4: anything is invalid.
(In reply to comment #5) > The code is not valid per the current spec. > > http://dlang.org/statement.html#SwitchStatement > > CaseStatement: > case ArgumentList : ScopeStatementList > > ScopeStatementList: > StatementListNoCaseNoDefault > > StatementListNoCaseNoDefault: > StatementNoCaseNoDefault > StatementNoCaseNoDefault StatementListNoCaseNoDefault > > By this spec, > case 1,2: case 3,4: anything > is invalid. I already said the spec was wrong and will have to be fixed. The OP code works without -w, and we're not about to break a ton of code because the spec is outdated (which is *very* common).
Where is the separate bug report about the spec being wrong?
(In reply to comment #7) > Where is the separate bug report about the spec being wrong? Opened. Issue 9529 - Switch Statement grammar bug for the chain of case statements
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/cac04a3dd38741205cac6b61400a7f91a8c8a36a Fixes Issue 6552 - Invalid error on non-existent switch-case fallthrough. https://github.com/D-Programming-Language/dmd/commit/631e980d134d7217ac3fe43809b625bc8f5bff9f Merge pull request #1673 from AndrejMitrovic/Fix6552 Issue 6552 - Invalid warning on non-existent switch case fallthrough.