On Monday, February 17, 2014 01:42:59 Manu wrote: > So D offers great improvements to switch(), but there are a few small > things I wonder about. > > 1. > case fall-through is not supported; explicit 'goto case n;' is required. > With this in mind, 'break' is unnecessary. Why is it required? It could be > implicit upon reaching the next case label, or a scope could be used (with > support for omitting the scope for single statements as with if). > It's really noisy, and annoying to write everywhere.
That goes against the D philosophy of making it so that C code is either valid D code with the same semantics, or it doesn't compile, so it's arguably not an option, much as it would make switch statements much less noisy. We _have_ in a very few cases broken the rule about C compatibility (e.g. static arrays are passed by value rather than reference), but it's not something that we've done much. And in this case, it could be particular pernicious, because any C/C++ code being ported over would end up with the reverse of its current semantics in any case that doesn't end with break. The same goes for any older D code that hasn't been compiled since implicit fallthrough became illegal. Compiling it with the newer compiler which had implicit breaks would silently alter its semantics. So, while in principle, I like the idea, I don't think that it's actually a viable one given D's design goals and history. - Jonathan M Davis
