Hi
Am 2025-03-21 21:41, schrieb Gina P. Banyard:
Am I following that? Because just from writing that I am not sure I
agree, which means I may be misunderstanding. :-)
I am saying:
interface I {
pubic function foo(never $a);
}
can ***not*** be "upgraded" to
interface I<A> {
pubic function foo(A $a);
}
whereas it is possible to go from
interface I {
pubic function foo(mixed $a);
}
to
interface I<A> {
pubic function foo(A $a);
}
The implementing classes are completely irrelevant in this context.
I don't follow here. Neither interface “could be upgraded” to make use
of generics, since the user would need to specify the type for `A`.
However the former could just be upgraded to `I<never>` and the
implementing class could still override the parameter type with some
specific type. This would not be better than the old interface with the
hardcoded `never` type, but also not worse. The latter would need to be
upgraded to `I<mixed>`, since otherwise you would be restricting passing
types that you formerly didn't, which makes the entire exercise useless.
Best regards
Tim Düsterhus