On 10/20/19 2:39 AM, Mike Schinkel wrote: >> case X: >> if (something) { >> fallthrough; >> } >> something-else; >> break; >> case Y: .... > > Interesting. > > What would you expect this to do? It is not intuitively obvious to me.
Directly jump to the next `case` (as `goto` would do). Also, fallthrough probably shouldn't be just a no-op, it should be jump. Consider this code case X: fallthrough; break; case Y: It should be clear what would happen in such cases. >> Then, don't we need a way to jump outside of the whole switch statement? Ah, >> there's `goto` already. So, maybe extend `goto` somehow? > > Is that not what `break` is for? Right. I was too much on throwing new ideas that I missed that some are already implemented ;). The point was that fallthrough with these added functionality mentioned above would be very close to `goto`. On the other hand: case X: goto next; // or goto case; ? case Y: sounds worse than: case X: fallthrough; case Y: or case X: pass; case Y: > The fact a potential feature is a no-op does not discredit it for me; instead > I focus on the benefits the proposed feature can provide. > > In this case the benefits would be to alerting developer when they > accidentally omit instructions to PHP of their intentions. And that seems to > me to be something (almost?) everyone would want to see embraced? Clearly* > PHPStan and many Linux developers would like the same[1][2]. Maybe if it was a feature (keyword) that could be useful in other places not only in switch... I proposed "pass" because it might have some uses out of switch (nothing comes to my mind, though right now) and because "fallthrough" is kinda hard word for non-native speakers. "pass" exists in Python. https://docs.python.org/2.0/ref/pass.html >> It might be not useful enough to justify a BC break. That was my intention, to find more value in a new feature to justify BC break. -- Aleksander 'A.L.E.C' Machniak Kolab Groupware Developer [http://kolab.org] Roundcube Webmail Developer [http://roundcube.net] ---------------------------------------------------- PGP: 19359DC1 # Blog: https://kolabian.wordpress.com -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php