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 <ltea...@gmail.com> 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 < > google-web-toolkit-contributors@googlegroups.com> 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 <ltea...@gmail.com> >> 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 <pstockl...@gmail.com> 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 >>>> google-web-toolkit-contributors+unsubscr...@googlegroups.com. >>>> 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 google-web-toolkit-contributors+unsubscr...@googlegroups.com. >>> 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 >> google-web-toolkit-contributors+unsubscr...@googlegroups.com. >> 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 google-web-toolkit-contributors+unsubscr...@googlegroups.com. > 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 google-web-toolkit-contributors+unsubscr...@googlegroups.com. 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.