Re: Re: RFC: Marking return values as important (#[\NoDiscard])

From: Date: Thu, 13 Feb 2025 22:28:59 +0000
Subject: Re: Re: RFC: Marking return values as important (#[\NoDiscard])
References: 1 2 3 4  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
On Thu, Feb 13, 2025, at 8:16 AM, Tim Düsterhus wrote:
> Hi
>
> Am 2025-02-12 22:31, schrieb Larry Garfield:
>> I'm still undecided on the RFC overall, but one thing that is 
>> problematic is the phrasing of the messages.  Currently, the messages 
>> in the attribute are fragments of an English sentence, seemingly 
>> designed to fit grammatically with a sentence fragment that is coded 
>> into the engine somewhere but not readily available to developers.
>
> Yes, the implementation of the error message very closely matches that 
> of #[\Deprecated] (except that there is no since bit to insert).
>
>> From my phrasing I think you can guess my opinion of that.
>> 
>> That is impossible to document cleanly for English speakers.  It will 
>> not translate at all for anyone who is writing in a non-English 
>> language (which people do).  People are going to get it wrong more than 
>> they get it right, in any language.
>> 
>> Instead, the wording should be structured to be a complete sentence, 
>> and the built-in message updated to make that logical.  That gives the 
>> developer much more freedom to write a meaningful, 
>> contextually-relevant message in the language of their choice.
>
> We're open to adjusting that. Do you have any suggestions? The 
> implementation of #[\Deprecated] works like it does, because PHP itself 
> already doesn't end the error messages with a ., as it appends `in 
> file.php on line 42`. This makes it inconvenient to have more than one 
> sentence in an error message, which is why we're struggling with coming 
> up with something better.
>
> Best regards
> Tim Düsterhus

Just spitballing:

"Return value of foo() is not used, on foo.php line 5: <user text here>"

Fiddle with the wording as needed, but by having a colon and then the user text, it makes it clear
it's a separate statement, and can be as flexible as a statement in your chosen language wants
to be.

--Larry Garfield


Thread (48 messages)

« previous php.internals (#126399) next »