Andrei Alexandrescu wrote:
Don wrote:
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.)


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.

It's actually not something I care about at all. But I think Walter's wrong about his coding style. And looking at how rarely it's actually used by someone who thinks he uses it a lot, convinces me that intentional use of fall-through is much less common than bugs introduced by leaving out a break statement.

An interesting result.
But I'd much rather change Walter's mind about opPow() or the meta.compiles(XXX) proposal.

Don       <----------        genius

Nah, I just know how Walter's mind works. It takes one to know one...

I frequently use fall-through myself, but having looked at this sample, I bet I don't use it nearly as much as I thought: again, "frequently" probably means "about 1% of the time". But I *know* I've had bugs from leaving out 'break'.

I understand that you're more interested about the issues that preoccupy you (and incidentally me) the most, but "switch" is a day-to-day programming (and programmer's) workhorse, so a change there might have a wider (and hopefully more positive) impact.

I should have said "immutable array literals" instead.


>>> 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.

Requiring 'goto' to implement fall-through would run into the prejudice against 'goto'. It's necessary to persuade managers that "goto case XXX;" isn't a bad, evil goto that eats babies. I have no idea if that's difficult or not. Otherwise, I think it's a superb solution. (providing that empty fall-through case statements remain valid; disallowing them would be really annoying).

Reply via email to