Re: Allow null variables to be decremented

From: 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

« previous php.internals (#108603) next »