Re: [RFC] [Discussion] Never parameters

From: Date: Thu, 20 Mar 2025 16:24:19 +0000
Subject: Re: [RFC] [Discussion] Never parameters
References: 1 2  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
On Tuesday, 11 March 2025 at 21:45, Larry Garfield <[email protected]> wrote:

> On Mon, Mar 10, 2025, at 2:05 PM, Daniel Scherzer wrote:
> 
> > Hi internals,
> > 
> > I'd like to start discussion on a new RFC about allowing never for
> > parameter types when declaring a method.
> > 
> > * RFC: https://wiki.php.net/rfc/never-parameters-v2
> > * Implementation: https://github.com/php/php-src/pull/18016
> > 
> > -Daniel
> 
> 
> I have a use case for this in Serde, so would be in favor.
> 
> We should not block this kind of improvement on the hope of generics. Worst case, we have this
> plus generics so you have options, how terrible.
> 
> Rust-style associated types would probably work as well. I'd be fine with that approach,
> too. One could argue they're more valuable as a sort of "junior generics," but absent
> anyone able and willing to implement them, again, worst-case we end up with options in the future.
> 
> --Larry Garfield

As the person that had the initial discussion in R11 with Jordan [1] never as a parameter type for
an interface actually is not the solution for "poor man generics".
Matthew Fonda [2] already replied to the thread pointing out the remark Nikita made in the
discussion of the previous RFC.
But importantly, going from mixed parameter type to a generic parameter type is *allowed* and not a
BC change,
however, going from a never parameter type to a generic parameter type is a BC break.

Thus, I am not sure this really a good idea.
The argument from Alwin is more compelling but considering we don't have conditional types, not
sure if this makes sense either.

Best regards,

Gina P. Banyard

[1] https://chat.stackoverflow.com/transcript/11?m=52810456#52810456
[2] https://externals.io/message/126698#126791


Thread (33 messages)

« previous php.internals (#126869) next »