- From: Simon Pieters <simonp@opera.com>
- Date: Mon, 22 Jun 2009 09:05:27 +0200
- To: "Cameron McCormack" <cam@mcc.id.au>, public-webapps@w3.org
On Mon, 22 Jun 2009 02:53:22 +0200, Cameron McCormack <cam@mcc.id.au> wrote: > From some very brief testing, it seems that Firefox and Opera tend > to throw an exception when calling a method with too few arguments, > while IE, Safari and Chrome will assume that the missing arguments were > the undefined value. Hmm. What did you use as test case? > Extra arguments tend to be ignored. > > Does anyone have an opinion on which way this should be specified in Web > IDL? Assuming this interface: > > interface A { > /* f1 */ void f(in DOMString a); > /* f2 */ void f(in DOMString a, in float b); > /* f3 */ void f(in DOMString a, in float b, in float c, in float d); > }; > > option 1 would be to have: > > a.f() be like calling f1 with (undefined) > a.f('a') be like calling f1 with ('a') > a.f('a', 1) be like calling f2 with ('a', 1) > a.f('a', 2, 3) be like calling f3 with ('a', 2, 3, undefined) > a.f('a', 2, 3, 4, 5) be like calling f3 with ('a', 2, 3, 4) > > and option 2 would be to have: > > a.f() throw an exception > a.f('a') be like calling f1 with ('a') > a.f('a', 1) be like calling f2 with ('a', 1) > a.f('a', 2, 3) throw an exception > a.f('a', 2, 3, 4, 5) be like calling f3 with ('a', 2, 3, 4) > > Web IDL currently says to throw on any incorrect number of arguments, > so it seems that it should change to be one of the above two options. I think I prefer option 2. It's easier for authors to find their mistake. If a spec author wants the behavior of option 1, then that's possible with [Optional]. -- Simon Pieters Opera Software
Received on Monday, 22 June 2009 07:06:20 UTC