> Le 26 nov. 2024 à 01:49, aggelos bellos <aggelosbell...@gmail.com> a écrit : > > Hello everyone, > > In this issue #16761 <https://github.com/php/php-src/issues/16761> it was > verified that in the above code it should throw a notice for both yields: > ``` > <?php > error_reporting(E_ALL); > function &y() > { > yield null; // warning > yield; // no warning, agreed to be a bug > } > foreach (y() as &$y); > ``` > I have created this PR <https://github.com/php/php-src/pull/16882> which adds > the "missing" notice but we aren't sure on > how to continue on this. > There are 2 main questions: > Should we continue with adding the missing notice and merge it also in master? > Should we deprecate / remove the usage of yield without value in reference > generator functions? > > - Aggelos Bellos
Hi, A notice would be consistent with what happens with: `function &f() { return; }; f();`. But don’t add new notices in patch releases, otherwise you may break without warning a non-trivial amount of code that conflates notices with fatal errors. The bug is not serious enough to warrant such a risk. Whether it should be deprecated, is a separate question. You should also consider what to do with: `function &g() { yield null; }`, `function &g() { if (false) yield; }`, `function &f() { return; }`, etc. —Claude