Re: Allow null variables to be decremented
| From: | tyson andre | Date: | Sat, 15 Feb 2020 18:11:41 +0000 |
| Subject: | Re: Allow null variables to be decremented | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-108603@lists.php.net to get a copy of this message | ||
My opinion is that it'd be more consistent for
-- to work like -= 1
(e.g. become -1).
It might break some code, but that code was probably incorrect.
Out of scope of the proposed RFC, but this reminds me of a similar issue:
Currently, the ++ and -- operators do nothing to arrays or objects,
not even emitting a notice or changing the value.
I see that ++ on typed properties/references can already throw a TypeError for integer
overflow,
so it might make sense to also start throwing a TypeError for ++ on objects (without
numeric operation handlers) and arrays.
I'd thought earlier that emitting a notice instead of throwing a TypeError for arrays/objects
might negatively limit the optimizations opcache can do
because error handlers can have side effects.
But it looks like I'd just have to allow inferring that MAY_BE_OBJECT and MAY_BE_ARRAY
could have side effects for the INC/DEC opcodes in may_have_side_effects() in
ext/opcache/Optimizer/dce.c.
(If your RFC ends up emitting warnings/notices, it would need to check for MAY_BE_NULL|MAY_BE_UNDEF
in dce.c, I think.)
Would there be any interest in emitting a warning or deprecation warning for objects/arrays starting
in php 8.0?
- Tyson