I tweaked the code a bit and now it should never output duplicated class literals. @Ray, Could you review the patch?
On Tue, Jun 9, 2015 at 10:31 AM, 'Ray Cromwell' via GWT Contributors < [email protected]> wrote: > I don't think it's an issue that blocks since people are most likely to > use SDM in uncompiled mode, and the 'error' can always be suppressed and > turned into a warning. At best, it might inhibit a const optimization in > Closure where it sees the same variable declared/assigned twice I think. > > > On Tue, Jun 9, 2015 at 10:27 AM, 'Roberto Lublinerman' via GWT > Contributors <[email protected]> wrote: > >> SDM expects that classes/interfaces get generated as a whole either all >> of it or none. As you know, class literals are not really part of the class >> but they are field in a separate synthetic class). Even SDM (with all >> optimizations off, no pruning at UnifyAST) if a reference to the class >> literal is not seen when generating the JS for the class then its class >> literal field wont be part of the JS for the class. >> >> For SDM it could only happen for interfaces (and maybe primitive types) >> because GwtAstBuilder will synthezise a getClass for each class containing >> reference to its class literals. >> >> The problem is further obscured because we (re)generate an epilogue each >> time and it contains all the class literals that are referenced from the >> code that is being recompiled whose classes where not part of the current >> compile. This serves a purpose in NON SDM where if only the class literal >> for a class is referenced, the class can be pruned. >> >> The only glitch remaining is that in SDM there might be duplicated class >> literals (but it should not affect the correctness). Is this an issue for >> Closure? >> >> On Tue, Jun 9, 2015 at 9:48 AM, 'Ray Cromwell' via GWT Contributors < >> [email protected]> wrote: >> >>> Chris, >>> My change actually fixed a bug which may have obscured a problem. >>> There were duplicate class literals being generated. So you'd get >>> InterfaceFoo.class twice in the output, and it may be in SDM you'd be >>> covered, but in regular compiled mode you'd get the duplicates which were >>> causing closure compiler issues. >>> >>> Roberto, Maybe this is an issue with >>> ControlFlowRecorder/RapidTypeAnalyzer and interface literals? >>> >>> >>> On Tue, Jun 9, 2015 at 9:43 AM, 'Chris DiGiano' via GWT Contributors < >>> [email protected]> wrote: >>> >>>> @Ray, rolling back your change indeed fixed the problem ( >>>> https://gwt-review.googlesource.com/#/c/12311/). How do you recommend >>>> we proceed? Anything I can do to help? >>>> >>>> @Roberto, thanks for your suggestion, but I had already tried >>>> restarting the code server and clearing the cache. This did not fix things. >>>> >>>> Chris >>>> >>>> On Mon, Jun 8, 2015 at 6:55 PM 'Roberto Lublinerman' via GWT >>>> Contributors <[email protected]> wrote: >>>> >>>>> This might be due to the way we handle class literals. Class literals >>>>> for interfaces if not referenced during the initial compile might cause >>>>> that error. The error should go aways if you restart SDM. >>>>> >>>>> The offending sequence is >>>>> >>>>> 0) Suppose initially you have (interface A, class B and class C) and >>>>> start SDM. >>>>> 1) Now edit class B to add a reference to A.class and recompile with >>>>> SDM (do not touch A at this time nor anything that makes it recompile) . >>>>> This should work fine because the literals that are referenced but whose >>>>> classes where not part of this compile will be generated in the epilogue. >>>>> 2) Now edit class C in any way that does not make B or A recompile. >>>>> Here you will have an error like the one you described. >>>>> >>>>> If you restart SDM at this point it should work. >>>>> >>>>> I'll get a fix for this tomorrow. >>>>> >>>>> >>>>> >>>>> >>>>> On Mon, Jun 8, 2015 at 3:23 PM, 'Ray Cromwell' via GWT Contributors < >>>>> [email protected]> wrote: >>>>> >>>>>> Ooops, wrong pointer (for external users) This one >>>>>> https://gwt-review.googlesource.com/#/c/12311/ >>>>>> >>>>>> >>>>>> On Mon, Jun 8, 2015 at 3:14 PM, Ray Cromwell <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Try rolling back this CL and see if it fixes it ( >>>>>>> https://critique.corp.google.com/#review/92873682/depot/google3/third_party/java_src/gwt/svn/trunk/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java >>>>>>> ) >>>>>>> >>>>>>> >>>>>>> On Mon, Jun 8, 2015 at 3:04 PM, Chris DiGiano <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> I'm having trouble referencing a JsType interface when running >>>>>>>> under superdevmode. I'm trying to pass the JsType as a class reference >>>>>>>> to a >>>>>>>> method that uses the class to coerce the results into the expected >>>>>>>> type: >>>>>>>> >>>>>>>> myelement.getCustomStampedElement("dialog", >>>>>>>> PolymerDialog.class).open(); >>>>>>>> >>>>>>>> Unfortunately, in superdevmode (and only in SDM) I get this error: >>>>>>>> >>>>>>>> Uncaught ReferenceError: >>>>>>>> Lcom_google_ccc_groups_rosters_frontend_polymer_jstype_PolymerDialog_2_classLit_0_g$ >>>>>>>> is not defined >>>>>>>> >>>>>>>> PolymerDialog is declared like this: >>>>>>>> >>>>>>>> @JsType >>>>>>>> public interface PolymerDialog { >>>>>>>> void open(); >>>>>>>> } >>>>>>>> >>>>>>>> and getCustomStampedElement is defined like this: >>>>>>>> >>>>>>>> /** >>>>>>>> * Returns the element specified in this custom element's >>>>>>>> template that matches the given id >>>>>>>> * with the result coerced to a non-vanilla element type. >>>>>>>> Equivalent to Polymer's $ function. >>>>>>>> * >>>>>>>> * @see >>>>>>>> * <a href=" >>>>>>>> https://www.polymer-project.org/1.0/docs/devguide/local-dom.html#node-finding >>>>>>>> "> >>>>>>>> * Polymer automatic node finding</a> >>>>>>>> */ >>>>>>>> <T> T getCustomStampedElement(String id, Class<T> type); >>>>>>>> >>>>>>>> It appears that the PolymerDialog JsType is being left out of the >>>>>>>> list of class literals available in superdevmode. Is this a bug? Any >>>>>>>> ideas >>>>>>>> for workarounds? >>>>>>>> >>>>>>>> Chris DiGiano >>>>>>>> >>>>>>>> -- >>>>>>>> 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/9826758e-1b0f-4797-8902-738a1fade037%40googlegroups.com >>>>>>>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/9826758e-1b0f-4797-8902-738a1fade037%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/CAPVRV7fZhv0AkiPYqfM2WWaW8zFvdgk-BYEucwRP8k4ewXEp6w%40mail.gmail.com >>>>>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAPVRV7fZhv0AkiPYqfM2WWaW8zFvdgk-BYEucwRP8k4ewXEp6w%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/CAC7T7gk_U85%2B6z1QK9XpAKEXbBJgviBfZ1j0kgE8_pYZsV6Y3g%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAC7T7gk_U85%2B6z1QK9XpAKEXbBJgviBfZ1j0kgE8_pYZsV6Y3g%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/CAHbZCdNJ6mBv%2BRwso0z_OSNF7531b9rSOgLE3zJ%3DvB7FxkFD0A%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAHbZCdNJ6mBv%2BRwso0z_OSNF7531b9rSOgLE3zJ%3DvB7FxkFD0A%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/CAPVRV7cU1HQb6Ns2U967CxuomGHvxxGt6YtmJxaOea6n8X_poQ%40mail.gmail.com >>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAPVRV7cU1HQb6Ns2U967CxuomGHvxxGt6YtmJxaOea6n8X_poQ%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/CAC7T7gmQh2YnD7nUcJ8UtEn7eAaWik1Ya%2BmwDEQNz-De%2Bm4UVQ%40mail.gmail.com >> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAC7T7gmQh2YnD7nUcJ8UtEn7eAaWik1Ya%2BmwDEQNz-De%2Bm4UVQ%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/CAPVRV7ePAvWoXju-%3DOpm9F9%2B-yGWFRm9B_zMcHLzrjeES%3D0xFQ%40mail.gmail.com > <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAPVRV7ePAvWoXju-%3DOpm9F9%2B-yGWFRm9B_zMcHLzrjeES%3D0xFQ%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/CAC7T7gkMW6J-j20-bAE8s_OSH2wDvPa%3D_iLnbLtMEUjc%2BThgtw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
