> It looks like Promise does implement Ithenable.
Yes. I know.

I did not word that very well. I’m not sure what I meant. I was probably 
talking about the AS3 implementation. I’m currently thinking that Promise 
should implement IPromise which inherits from IThenable and ICatchable. Is 
there a way of declaring static functions in interfaces (i.e. 
IPromise.resolve(), IPromise.reject(), IPromise.all())?

I’m not sure what you mean about not using es6. The definitions seem to be 
picked up from there.

On Nov 17, 2016, at 6:37 PM, Alex Harui <aha...@adobe.com> wrote:

> I just looked at:
> 
> flex-typedefs/target/generated-sources/externc/classes/Promise.as
> flex-typedefs/target/generated-sources/externc/interfaces/IThenable.as
> 
> It looks like Promise does implement Ithenable.
> 
> I don't think we are currently using es6.
> 
> -Alex
> 
> On 11/16/16, 3:04 PM, "Harbs" <harbs.li...@gmail.com> wrote:
> 
>> It seems to me that the extern is wrong. According to MDC, the return
>> type for all Promise methods should be of type Promise.[1]
>> 
>> Maybe Promise should implement IThenable (and possibly ICatchable), but I
>> think Promise should return Promise.
>> 
>> How do we patch the js files?
>> 
>> I could also try to make a pull request and/or open an issue on their
>> extern. My last pull request for node externs was accepted.
>> 
>> Thoughts?
>> 
>> [1]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Globa
>> l_Objects/Promise/then
>> On Nov 17, 2016, at 12:42 AM, Josh Tynjala <joshtynj...@gmail.com> wrote:
>> 
>>> Based on that really strange @template tag, Object is definitely the
>>> correct response from externc. Google seems to be doing something
>>> advanced
>>> there that I'm not even sure is documented.
>>> 
>>> I also don't think we want to try to parse that mess. If we want it to
>>> return IThenable or something, then we need to apply a patch file,
>>> similar
>>> to other changes that we make.
>>> 
>>> - Josh
>>> 
>>> On Wed, Nov 16, 2016 at 2:26 PM, Harbs <harbs.li...@gmail.com> wrote:
>>> 
>>>> 
>>>> On Nov 16, 2016, at 11:20 PM, Alex Harui <aha...@adobe.com> wrote:
>>>> 
>>>>> 
>>>>> 
>>>>> On 11/16/16, 11:07 AM, "Harbs" <harbs.li...@gmail.com> wrote:
>>>>> 
>>>>>> 
>>>>>> So you are suggesting to make it a top-level class. Right? Otherwise
>>>>>> we’re not good to go.
>>>>>> 
>>>>>> Another problem with the definition in js.swc is that then() returns
>>>>>> an
>>>>>> Object, while it should really return a Thenable. I don’t think
>>>>>> Thenable
>>>>>> is defined as an interface in JS.
>>>>> 
>>>>> You can use patch files and missing.js to tweak the API if you need
>>>>> to.
>>>> 
>>>> I’m a bit confused by where the types are being picked up from. js.swc
>>>> definitely gets them, and it looks like it’s getting them from es6.js.
>>>> I
>>>> see that there actually is an IThenable which is a defined type,
>>>> although
>>>> IThenable only has a then() method and not a catch() method.
>>>> 
>>>> One thing which is throwing me off is the fact that es6.as defines
>>>> Promise.resolve() like this:
>>>> /**
>>>> * @param {VALUE=} opt_value
>>>> * @return {RESULT}
>>>> * @template VALUE
>>>> * @template RESULT := type('Promise',
>>>> *     cond(isUnknown(VALUE), unknown(),
>>>> *       mapunion(VALUE, (V) =>
>>>> *         cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
>>>> *           templateTypeOf(V, 0),
>>>> *           cond(sub(V, 'Thenable'),
>>>> *              unknown(),
>>>> *              V)))))
>>>> * =:
>>>> */
>>>> Promise.resolve = function(opt_value) {};
>>>> 
>>>> I have no clue what all this template stuff means, but the js.swc is
>>>> expecting an Object as the return type.
>>>> 
>>>> Promise.reject() has a return type of Promise which seems more correct
>>>> to
>>>> me. Is Promise.resolve() broken, and if yes, how do we fix it?
>>>> 
>>>>> 
>>>>>> 
>>>>>>> IMO, polyfills should be beads you add to your Application beads if
>>>>>>> you
>>>>>>> need them.
>>>>>> 
>>>>>> Makes sense, although I’m not sure what the bead would look like.
>>>>>> I think manually adding a polyfill for I.E. in the HTML is a
>>>>>> reasonable
>>>>>> work-around as well.
>>>>> 
>>>>> The bead would use <inject_html>
>>>>> 
>>>>> -Alex
>>>>> 
>>>> 
>>>> 
>> 
> 

Reply via email to