W3C home > Mailing lists > Public > public-webapps@w3.org > April to June 2009

Re: Handling too few arguments in method calls

From: Cameron McCormack <cam@mcc.id.au>
Date: Fri, 26 Jun 2009 11:19:04 +1000
To: Oliver Hunt <oliver@apple.com>
Cc: Darin Adler <darin@apple.com>, public-webapps@w3.org
Message-ID: <20090626011904.GE8712@arc.mcc.id.au>
Oliver Hunt:
> There's also overloaded functions like (for example)  
> CanvasRenderingContext2d.drawImage
> void drawImage(in HTMLImageElement image, in float dx, in float dy,  
> [Optional] in float dw, in float dh)
>
> if I do drawImage(image, x, y, foo) is this under-provision for  
> drawImage(image,x,y,foo,undefined) or over provision for  
> drawImage(image,x,y) or is it an error?

Currently, passing a number of arguments (4) in between the allowed
numbers (3 & 5) gives a TypeError.  I’d be inclined to consider these
cases as under-provision.

> Do we need an annotation to say something like
> void drawImage(in HTMLImageElement image, in float dx, in float dy,  
> [Optional 2] in float dw, in float dh)
> (or something) that would say the next 2 arguments are optional, but  
> both must be provided?

Well, maybe.  [Optional] actually means the argument it appears on and
all following, as a group, can be omitted.  I think this is a little
confusing, though, so I’m thinking about allowing [Optional] only if it
is the last argument, or if all following arguments are [Optional]
(or [Variadic]).  For other cases, like drawImage() here, you can use
explicit overloading:

  void drawImage(in HTMLImageElement image, in float dx, in float dy);
  void drawImage(in HTMLImageElement image, in float dx, in float dy,
                 in float dw, in float dh);

-- 
Cameron McCormack ≝ http://mcc.id.au/
Received on Friday, 26 June 2009 01:19:52 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:31 GMT