I believe we can adopt the behaviour of mature languages that supports this
feature. Java, for instance, throw a compile-time error saying that the
method signature is ambiguous.

On Sun, Feb 3, 2019 at 17:51 David Rodrigues <david.pro...@gmail.com> wrote:

> Em dom, 3 de fev de 2019 às 17:19, Rowan Collins <rowan.coll...@gmail.com>
> escreveu:
>
> > On 03/02/2019 19:00, Christoph M. Becker wrote:
> > > On 03.02.2019 at 19:39, David Rodrigues wrote:
> > >
> > >> overload function sum(int $a, int $b): int;
> > >> overload function sum(float $b, float $b): float;
> > > Which function would sum(17.4, 42) call?  Also consider:
> > >
> > >    sum(PHP_INT_MAX, PHP_INT_MAX)
> > >
> > > vs.
> > >
> > >    sum(PHP_INT_MAX+1, PHP_INT_MAX+1)
> >
> >
> > Yes, marking overloaded functions explicitly definitely helps, but I
> > think the dispatch part is more complex than it first seems. Classes and
> > interfaces require a bit of subtlety too:
> >
> > class Foo {}
> > class Bar extends Foo {}
> >
> > overload function foo(Foo $a, Foo $b);
> > overload function foo(Foo $a, Bar $b);
> > overload function foo(Bar $a, Foo $b);
> >
> > foo(new Bar, new Bar);
> >
>
> This example could be complex. So, what other languages does in cases like
> that? Java, for instance.
>
>
> >
> > There are plenty of cases more complex than this, e.g. when a class
> > implements multiple interfaces, and you need to find a matching
> signature.
> >
> > That's not to say it's impossible, just don't underestimate the edge
> > cases you'll need to legislate for.
> >
> > Oh, and note that return types can't participate in overloading, because
> > there's no concept of "desired type" to choose between them.
> >
>
> You are right, in general. But still is possible identify the desired type
> if return is used as argument to a typed parameter, but I still thinks that
> it could not be done in general terms, so maybe we should not includes
> return type to overloading.
>
>
> >
> > Regards,
> >
> > --
> > Rowan Collins
> > [IMSoP]
> >
> >
> > --
> > PHP Internals - PHP Runtime Development Mailing List
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>
> --
> David Rodrigues
>

Reply via email to