Re: Expanding the scope of the #[NoDiscard] attribute
| From: | Kenta Usami | Date: | Tue, 01 Jul 2025 15:56:39 +0000 |
| Subject: | Re: Expanding the scope of the #[NoDiscard] attribute | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-127828@lists.php.net to get a copy of this message | ||
Hi Tim,
Thank you for your reply and for the clarification.
As one of the RFC authors, your insight is very helpful.
I now have a much clearer understanding of the RFC's intent. Your
point that #[NoDiscard] is not meant for every pure function, but
rather for those where ignoring the return value leads to dangerous,
hard-to-detect bugs, makes perfect sense. I agree that focusing the
runtime check on high-risk functions, while leaving most pure
functions to static analysis, is a reasonable approach.
Based on that criterion, I understand that very few built-in functions
should be marked with #[NoDiscard].
To give some context, my initial proposal was motivated by the ongoing
confusion around the semantics of the #[Pure] attribute in the
JetBrains stubs for static analysis. I had hoped that marking more
built-in functions with #[NoDiscard] could help clarify the situation,
but I now see that this is not the appropriate goal for this
attribute.
https://github.com/JetBrains/phpstorm-stubs/pull/1730
It seems a different approach is needed to solve that particular
problem for static analyzers.
Thanks again for your time and the explanation.
Best regards,
Kenta
--
ヾ(〃><)ノ゙☆ Kenta Usami (宇佐美健太)
github.com/zonuexe ; https://tadsan.github.io/