That is added relatively recent. And thanks for pointing the documentation issue; add a issue to review all before the final release.
On Thu, Sep 1, 2016 at 10:08 PM, Arnaud TOURNIER <[email protected]> wrote: > Thanks a lot for your answer. > > I tried the solution with defender methods earlier but it did not work, as > far as i remember the compiler refused @JsOverlay defender methods on the > JsFunction. The @JsFunction documentation says that : "A JsFunction > interface cannot have defender methods." > I will try again in this direction and let you know if i find a bug. > > Thanks > Arnaud > > Le ven. 2 sept. 2016 à 05:28, 'Goktug Gokdogan' via GWT Contributors < > [email protected]> a écrit : > >> The limitation around @JsFunction is basically driven from the >> limitations of being a function. I think there was an earlier discussion in >> the contibutor list where we explained this in more detail. >> >> Being said that, you can handle some overloading in JsFunction interfaces >> via defender methods marked with @JsOverlay that are delegating to a main >> method. Something like: >> >> >> @JsFunction >> public interface Resolver<T> { >> >> void resolve(Object value); >> >> @JsOverlay >> default void resolve() { resolve(null); } >> @JsOverlay >> default void resolve(T value) { resolve(value); } >> @JsOverlay >> default void resolve(Promise<T> value) { resolve(value); } >> } >> >> Let's us know before it is too late if you hit any bugs around this :) >> >> >> On Tue, Aug 30, 2016 at 7:13 AM, Arnaud TOURNIER <[email protected]> >> wrote: >> >>> Oh thanks! I'll try that. >>> Once I think we need to merge our work on those topics... >>> Thanks! >>> >>> Le mar. 30 août 2016 16:06, Paul Stockley <[email protected]> a >>> écrit : >>> >>>> If you are passing Resolver<T> into some function. You could instead >>>> create 3 Resolver interfaces and then overload the function so that it took >>>> each of the resolver interfaces. >>>> >>>> >>>> On Saturday, August 27, 2016 at 9:51:50 AM UTC-4, Arnaud TOURNIER wrote: >>>>> >>>>> Hi, >>>>> >>>>> I am playing with js Promises and maybe there's a problem with >>>>> JsInterop or i don't understand something. >>>>> >>>>> When wrapping the promises with JsInterop, i come to define the >>>>> Resolver interface which represents the resolving callback that is given >>>>> when constructing a promise. In Javascript it is a function and not an >>>>> object, so the interface has the @JsFunction annotation. >>>>> >>>>> Here is the Resolver interface (inspired from the TypeScript >>>>> definition of Promises...) : >>>>> >>>>> @JsFunction >>>>> @FunctionalInterface >>>>> public interface Resolver<T> >>>>> { >>>>> void resolve( T value ); >>>>> } >>>>> >>>>> Since the Javascript "resolve" function can be called without >>>>> parameters and also with a Promise instead of a value, i would like to >>>>> make >>>>> those versions available in the interface. >>>>> >>>>> But the @JsFunction annotation prevents from having this : >>>>> >>>>> @JsFunction >>>>> public interface Resolver<T> >>>>> { >>>>> void resolve(); >>>>> >>>>> void resolve( T value ); >>>>> >>>>> void resolve( Promise<T> value ); >>>>> } >>>>> >>>>> That's because it allows only one method in the annotated interface. >>>>> >>>>> That is what i don't understand : AFAIK, the gwt compiler has to call >>>>> the same function in the same way for the three declared methods (because >>>>> of the semantic of the @JsFunction annotation), just changing the calling >>>>> parameters. So i don't understand why is there the limitation of having >>>>> only one method allowed in @JsFunction interfaces... If it would it would >>>>> give even much power to JsInterop ! >>>>> >>>>> Could you please bring light to my misunderstanding ? >>>>> >>>>> Thanks ! >>>>> >>>>> Arnaud >>>>> >>>> -- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "GWT Contributors" group. >>>> To unsubscribe from this topic, visit https://groups.google.com/d/ >>>> topic/google-web-toolkit-contributors/pNmyrzkfPWo/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> [email protected]. >>>> To view this discussion on the web visit https://groups.google.com/d/ >>>> msgid/google-web-toolkit-contributors/a5ebf0e5-2e7f- >>>> 40b9-ac82-a52c4b9ee5a6%40googlegroups.com >>>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/a5ebf0e5-2e7f-40b9-ac82-a52c4b9ee5a6%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >>> >> You received this message because you are subscribed to the Google Groups >>> "GWT Contributors" group. >>> >> To unsubscribe from this group and stop receiving emails from it, send an >>> email to [email protected]. >>> To view this discussion on the web visit https://groups.google.com/d/ >>> msgid/google-web-toolkit-contributors/CANjaDnd6AzYDRpzLdPFkpzw5j6To6 >>> BN-22NqPyQVyaB9ER%2B9hQ%40mail.gmail.com >>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CANjaDnd6AzYDRpzLdPFkpzw5j6To6BN-22NqPyQVyaB9ER%2B9hQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >> >> >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "GWT Contributors" group. >> To unsubscribe from this topic, visit https://groups.google.com/d/ >> topic/google-web-toolkit-contributors/pNmyrzkfPWo/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> To view this discussion on the web visit https://groups.google.com/d/ >> msgid/google-web-toolkit-contributors/CAN%3DyUA0eP2NCTC6nWX8y4dF6T4X0TdS >> rJWVuGk_7E1KKoLs_bA%40mail.gmail.com >> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAN%3DyUA0eP2NCTC6nWX8y4dF6T4X0TdSrJWVuGk_7E1KKoLs_bA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to the Google Groups > "GWT Contributors" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/google-web-toolkit-contributors/CANjaDndYyVk4eH%2BCzKkBVpBgtBChX9e- > sBspVHmmPcgHM1NiLw%40mail.gmail.com > <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CANjaDndYyVk4eH%2BCzKkBVpBgtBChX9e-sBspVHmmPcgHM1NiLw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAN%3DyUA0591e9P11UhsbzH0WqUR4%2BKn_xe3vWiitim2AQ7z-Vyw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
