ok, taking a look
On Tue, Jun 9, 2015 at 11:38 AM, 'Roberto Lublinerman' via GWT Contributors <[email protected]> wrote: > 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 > <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAC7T7gkMW6J-j20-bAE8s_OSH2wDvPa%3D_iLnbLtMEUjc%2BThgtw%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/CAPVRV7deXmPm-D%2BamLqHukd%2BA7GOy2Ok-Fe-auG468EhgPeX6A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
