I'd be cool with that! I don't like adding that extra argument to addEventListener() calls.
- Josh On Sat, Mar 18, 2017 at 1:45 PM, Harbs <harbs.li...@gmail.com> wrote: > Thanks. > > I noticed that it was a general problem after I posted this question. > > Maybe we should patch the extern file? > > > On Mar 18, 2017, at 10:24 PM, Josh Tynjala <joshtynj...@gmail.com> > wrote: > > > > It's not optional on the base interface where addEventListener() and > > removeEventListener() are defined. I think it's EventTarget. Since > > subclasses and implementers of interfaces aren't allowed to change the > > signature of a method in ActionScript, externc uses the original > signature > > and ignores the overload on FileReader. > > > > I opened a pull request for Closure Compiler to make that parameter > > optional on EventTarget in the official externs (it was non-optional > > because some old browsers required it, I think). Google seemed open to > the > > idea, but I don't think they ever merged it. > > > > - Josh > > > > On Mar 18, 2017 12:12 PM, "Harbs" <harbs.li...@gmail.com> wrote: > > > >> I found what looks like a bug in the FileReader typedefs: > >> > >> The following in fileapi.js: > >> > >> /** > >> * @param {boolean=} opt_useCapture > >> * @override > >> * @return {undefined} > >> */ > >> FileReader.prototype.addEventListener = function(type, listener, > >> opt_useCapture) > >> {}; > >> > >> /** > >> * @param {boolean=} opt_useCapture > >> * @override > >> * @return {undefined} > >> */ > >> FileReader.prototype.removeEventListener = function(type, listener, > >> opt_useCapture) {}; > >> > >> compiles to this in FileReader.as: > >> > >> /** > >> * @param opt_useCapture [(boolean|undefined)] > >> * @see [fileapi] > >> * @returns {undefined} > >> */ > >> public function addEventListener(type:String, listener:Object, > >> useCapture:Boolean):Object /* undefined */ { return null; } > >> > >> /** > >> * @param opt_useCapture [(boolean|undefined)] > >> * @see [fileapi] > >> * @returns {undefined} > >> */ > >> public function removeEventListener(type:String, listener:Object, > >> useCapture:Boolean):Object /* undefined */ { return null; } > >> > >> The result is wrong because the third parameter is supposed to be > >> optional. The thing is, I don’t understand how we ended up with the > output > >> we did. The parameter was renames and retyped… > >> > >> Harbs > >