flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Harbs <harbs.li...@gmail.com>
Subject Re: [FlexJS Typedefs]FileReader
Date Sat, 18 Mar 2017 20:45:42 GMT
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 <joshtynjala@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.lists@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


Mime
View raw message