On Tuesday, 28 May 2024 at 07:53, Daikaras <webmas...@daikaras.lt> wrote: > > I feel like the reasoning in this RFC is misguided. `exit` behavior is > not consistent with functions because it is not a function. But it is > consistent with constructs like `echo`. Or am I wrong? I'm all for > stricter typing but not at a cost of reliability. `exit` IMO should > always terminate script, no exceptions (no pun intended :)). Otherwise, > it may have security implications in some codebases, as Saki pointed > out. So I'd rather have it error fatally like for example `break` does > when passed non-integers. And on the same note maybe syntax could be > improved to not require parentheses when passing the code (so `exit 0;` would > be valid) since it seems to be the cause of the confusion. > > Just my 2c. > > p.s. In B/C table you should mention that passing Stringable objects > will throw TypeError when `strict_types` are enabled.
This is not the cause of my confusion. If you had read the RFC carefully, you would have seen that exit() already throws a TypeError that can be caught if you pass in a non-stringable object. So the argument that it should always exit is invalid. Moreover, in other programming languages exit() is a function, and I don't see a reason for having something be a language construct when there is no need for it. Best regards, Gina P. Banyard