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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to