Hi there, Andrew Nester wrote:
Hello internals! I was working on solution for the problem of double to int conversion for array indices and would like to create an RFC for proposed solution - emitting warning when integer overflow happens during double to int conversion. Does it look like good idea? Thanks!
It's certainly an improvement over silently truncate-wrapping like at present.
But one question I might have is whether there's any benefit to it just being a warning rather than an Error. Surely nobody would rely on this behaviour? I can't imagine a use-case where it doing % 2^64 on your indices is helpful. Who would want the code execution to continue beyond that point? Will someone want to silence this error?
Compare how the `int` type declaration on userland functions handles floats like these: it throws a TypeError. Internal functions *do* throw a warning, but they don't execute their body and return NULL instead (they do throw a TypeError in strict mode).
If you threw some kind of Error instead, I can't imagine it causing backwards-compatibility problems in practice, and at least personally, I think it would be the better choice. But I wrote the RFC that made passing floats > PHP_INT_MAX or < PHP_INT_MIN to functions with integer parameters produce those errors, so of course I'd say that…
Anyway, thanks for bringing this up! It's something that I've wanted to fix since a long time ago and had forgotten about.
-- Andrea Faulds https://ajf.me/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php