This seems not to work. When we call foo(arg1, undefined), arguments.length is 2 and thus we convert undefined to 0 and pass it to impl->foo(arg1, arg2). But we want default value for arg2 other than 0.
On Fri, Apr 22, 2011 at 8:52 AM, Oliver Hunt <oli...@apple.com> wrote: > An alternative would be to generate code for optional args along the lines > of (pseudo code): > void foo(Arg1Type arg1, [Optional] Arg2Type arg2); > => > Arg1Type arg1 = toArg1Type(arguments[0]); > if (arguments.length < 2) > return impl->foo(arg1); > Arg2Type arg2 = toArg2Type(arguments[1]); > return impl->foo(arg1, arg2); > > > This would allow the C++ impl to use overloading to resolve things > correctly. > > --Oliver > > On Apr 21, 2011, at 10:16 PM, Jian Li wrote: > > One other way is to write custom binding code to handle this > case specially. > > > On Thu, Apr 21, 2011 at 10:07 PM, Maciej Stachowiak <m...@apple.com> wrote: > >> >> On Apr 21, 2011, at 6:29 PM, Jian Li wrote: >> >> I've pinged the spec author to make it clear in the spec. What is meant >> in the spec is really that we want Blob.slice to have the same exact >> behavior as Array.slice defined in ECMAScript 5, 15.4.4.10. That is, >> Blob.slice(start) has the same result as Blob.slice(start, undefined). >> >> The current code generator scripts will convert undefined value to 0. But >> we really want to use the custom default value for Blob.slice. Do we want to >> consider adding "DefaultValue=" extended attribute support to IDL? >> >> >> I'd prefer if we can find a way to solve it that does not require >> diverging our IDL dialect further from Web IDL, especially since this is the >> only method likely to need the feature. Are there any other practical >> solutions? >> >> Regards, >> Maciej >> >> >> Thanks, >> >> Jian >> >> >> On Thu, Apr 21, 2011 at 3:38 AM, Maciej Stachowiak <m...@apple.com> wrote: >> >>> >>> On Apr 21, 2011, at 12:14 AM, Jian Li wrote: >>> >>> > The current File API spec says that: >>> > If the end parameter is not provided (undefined), let relativeEnd >>> be size. >>> >>> That seems like loose wording. Parameter not provided and parameter >>> provided with a value of undefined are in general not the same thing. The >>> spec should be explicit about which cases it's talking about. >>> >>> Regards, >>> Maciej >>> >> >> >> > _______________________________________________ > webkit-dev mailing list > webkit-dev@lists.webkit.org > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev > > >
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev