On Sun, Dec 6, 2015 at 5:46 PM, Goktug Gokdogan <[email protected]> wrote:
> You need to remove initialization as well because the field by Java; the > point is to link to the underlying javascript. > > I was going to write "the field *is not owned* by Java" > (A field that is defined by a native JsType is "native", meaning it is > linked to underlying javascript and will generate code like > 'canvas.nodeType == Node.ELEMENT_NODE') > > On Sun, Dec 6, 2015 at 2:15 AM, rhmoller <[email protected]> wrote: > >> Just removing the final keyword does not work. It still complains about >> the initialization. I cannot remove the initialization because that is not >> valid Java. >> >> The @JsOverlay solution looks OK. This line of Java >> >> ctx.fillText("Canvas is an element node: " + (canvas.getNodeType() == >> Node.ELEMENT_NODE), 10, 20); >> >> compiles to this line of Javascript >> >> ctx.fillText('Canvas is an element node: ' + (canvas.nodeType == 1), 10, >> 20); >> >> There does not seem to be any overhead from the overlay. It would have >> been nicer if it said (canvas.nodeType == Node.ELEMENT_NODE) in Javascript. >> But it evaluates to the same, so I am happy. >> >> >> Den fredag den 4. december 2015 kl. 06.28.02 UTC+1 skrev Goktug Gokdogan: >>> >>> Ignoring initialization is quite complicated when you put in to account >>> generated clinit and also primitives which becomes compile-time-constants >>> per jls and automatically inlined. Also code wise it is quite weird and >>> potentially confusing. >>> >>> Workaround is quite simple, just remove the "final" keyword and you are >>> set. >>> >>> >>> On Thu, Dec 3, 2015 at 5:35 AM, Jens <[email protected]> wrote: >>> >>>> >>>> Awesome. Thank you. @JsOverlay did the trick. >>>>> >>>> >>>> But IMHO @JsOverlay is only a workaround because it is meant to be used >>>> for code additions that do not exist in the underlying native type. So in >>>> your case GWT will now generate some additional code for your constants and >>>> will not use $wnd.Node.ELEMENT_NODE when doing comparisons. The link Thomas >>>> has posted is a good example of proper JsOverlay usage as the constant >>>> "TAG" is not part of the underlying native object. >>>> >>>> So I would consider it a bug/missing feature that you can not define >>>> native constants in a native JsType. IMHO the restriction checker should >>>> allow static final constant initialization in native JsType and if constant >>>> is not annotated with @JsOverlay then GWT should treat the constant name as >>>> native constant. The value to initialize the constant in java code should >>>> be ignored, as initialization only exists to make java happy. >>>> >>>> cc @goktug >>>> >>>> -- J. >>>> >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "GWT Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/google-web-toolkit. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "GWT Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/google-web-toolkit. For more options, visit https://groups.google.com/d/optout.
