November 16, 2009
Andrei Alexandrescu Wrote:

> Chad J wrote:
> > So, switch-case statements are a frequent source of nasty bugs.  Fixing them (well) requires breaking backwards compatibility.
> > 
> > Any chance this will happen for D2?
> > 
> > (This is intended as more of a reminder and simple curiosity than a
> > discussion.)
> 
> I wish very much that a transferring control flow statement (break, return, goto etc.) is required at the end of each case. Then, the rare case when you want to break through is easy to implement as goto case xxx; and all is good.
> 
> Walter's answer to that has put me to silence for good. "But I use fall-through all the time!" I then knew the feature will never make it.

As long as it's possible to enumerate a list of matches for one case statement then I'm all for it.  I very rarely use fall-through in any of my code but lexers/parser, where I enumerate lists of matches everywhere.

I'll admit to still being a bit peeved that I have to add default conditions where I only want a break, etc, but I'll concede that the safety is worth what I feel is unnecessary code.  Just because "I never hit those bugs in my code" doesn't mean they aren't a common source of problems.