Re: Handling too few arguments in method calls

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 UTC