- From: Cameron McCormack <cam@mcc.id.au>
- Date: Tue, 09 Aug 2011 10:53:31 +1200
- To: Jonas Sicking <jonas@sicking.cc>
- CC: Lachlan Hunt <lachlan.hunt@lachy.id.au>, public-script-coord@w3.org, bzbarsky@mit.edu, allen@wirfs-brock.com
On 9/08/11 10:24 AM, Jonas Sicking wrote:
> Acutally, I was arguing back then too that the fact that this collides
> with our XPIDL doesn't matter since we can't use WebIDL in our code
> directly anyway for a host of other reasons.
Ah. :) Maybe I was misremembering and it was the WebKit people.
> I'm saying that I think the following two interfaces should be exactly
> equivalent:
>
> interface i {
> void f(in optional DOMString x);
> void f(in object y);
> };
>
> interface i {
> void f();
> void f(in DOMString x);
> void f(in object y);
> };
>
> and in both cases the following two should be equivalent:
>
> x.f(undefined);
> x.f();
>
> and neither should be equivalent to
>
> x.f("undefined");
>
> I'm also saying that I'm aware that this will complicate the overload
> algorithm, but I think that's worth it. Especially since it shouldn't
> result in worse runtime performance.
Thanks for the clarification. I agree with the above, but I don't think
this would complicate the overload resolution algorithm too much (I
guess that's where I got confused). Certainly not as much as treating
operations with optional arguments differently from overloaded
operations, anyway.
I think the only complication that comes in is when considering "any".
It would be treated just like window.alert() etc. in that explicit
undefined is considered a real argument that was passed. Do you think
it would be common enough for operations that take any to want to treat
undefined as a real value, rather than an omitted argument? If not,
then we could treat it the same way as window.alert(), if we are happy
for that mechanism not to be labelled a "for legacy use only" thing.
Received on Monday, 8 August 2011 22:54:11 UTC