Monday, June 30, 2014

Re: [gwt-contrib] Translated to null.nullField when using JsInterop & @JsType

Hi Ray,

Here is the source for CollaborativeOperation:
https://github.com/goodow/realtime-operation/blob/master/src/main/java/com/goodow/realtime/operation/impl/CollaborativeOperation.java

the final project which depends on realtime-operation:
https://github.com/goodow/realtime-store (Using the ./gwt-compile.sh to compile)

and the live playground:
http://realtimeplayground.goodow.com/

Thanks!


On Tuesday, July 1, 2014 1:18:33 AM UTC+8, Ray Cromwell wrote:
Can you post the full source for CollaborativeOperation? My guess is
the UserID and SessionID fields are being proven by the compiler to be
uninstantiated types. Are userId/sessionId simple Strings, or some
other type?

.

On Mon, Jun 30, 2014 at 8:18 AM, 'Daniel Kurka' via GWT Contributors
<google-web-toolkit-contributors@googlegroups.com> wrote:
> I have seen this happening before when the pruner removes a type that he
> does not consider live but actually is live.
>
> Fast try, can you change:
> final CollaborativeOperation first = operations.<CollaborativeOperation>
> get(0);
>
> to:
> final CollaborativeOperation first = (CollaborativeOperation)
> operations.<CollaborativeOperation> get(0);
>
> -Daniel
>
>
> On Mon, Jun 30, 2014 at 8:09 AM, 田传武 <i...@goodow.com> wrote:
>>
>> I'm sure this is an optimizer bug.
>>
>> null.nullField causes the following error at runtime:
>> SEVERE: (TypeError) : Cannot read property 'nullField' of
>> nullcom.google.gwt.core.client.JavaScriptException: (TypeError) : Cannot
>> read property 'nullField' of null
>>         at
>> Unknown.$compose(http://localhost:63342/realtime/app/bower_components/realtime-store/realtime-store.js@41)
>>
>> However, the draft compilation javascript works very well.
>>
>> On Monday, June 30, 2014 10:58:08 PM UTC+8, John A. Tamplin wrote:
>>>
>>> Generally, null.nullField means the compiler can prove the value is null
>>> at that point, and draft compile skills the optimization that defects a lot
>>> of that.  So either it really is always null, or there is an optimizer bug.
>>>
>>> On Jun 30, 2014 10:31 AM, "田传武" <i...@goodow.com> wrote:
>>>>
>>>> Hello,
>>>> The newest @JsType feature is really very fascinating, and works in most
>>>> cases. The only issue i found was the wrong null.nullField javascript
>>>> output.
>>>>
>>>> the compile command:
>>>>
>>>> java -cp xxx com.google.gwt.dev.Compiler -war xxx -XnoclassMetadata
>>>> -XnocheckCasts -XjsInteropMode JS -XclosureCompiler -style PRETTY
>>>> com.goodow.realtime.store.StoreProd
>>>>
>>>>
>>>> Java code:
>>>>
>>>> public CollaborativeOperation compose(JsonArray operations) {
>>>>     final CollaborativeOperation first =
>>>> operations.<CollaborativeOperation> get(0);
>>>>     if (operations.length() == 1) {
>>>>       return first;
>>>>     }
>>>>     final JsonArray components = Json.createArray();
>>>>     operations.forEach(...);
>>>>     return new CollaborativeOperation(first.userId, first.sessionId,
>>>> components);
>>>>   }
>>>>
>>>>
>>>> translated to the following javascript:
>>>>
>>>>  function $compose(operations) {
>>>>   var components;
>>>>   components = operations[0];
>>>>   if (1 == operations.length) {
>>>>     return components;
>>>>   }
>>>>   components = [];
>>>>   $forEach(operations, new CollaborativeTransformer$1(components));
>>>>   return new CollaborativeOperation(null.nullField, null.nullField,
>>>> components);
>>>> }
>>>>
>>>>
>>>>
>>>> There's an easy workaround to fix this: using the -draftCompile options
>>>> when compilation. Here is the full compilation log:
>>>> https://travis-ci.org/goodow/realtime-store/builds/28777579 (search for
>>>> ./gwt-compile.sh)
>>>>
>>>>
>>>> --
>>>> 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+unsubscribe@googlegroups.com.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/google-web-toolkit-contributors/35eb8ed2-588b-484a-b2f4-b58b5bb01f46%40googlegroups.com.
>>>> 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+unsubscribe@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/google-web-toolkit-contributors/362b0daf-c174-4021-9bc8-acee19af0cfc%40googlegroups.com.
>>
>> For more options, visit https://groups.google.com/d/optout.
>
>
>
>
> --
> Google Germany GmbH
> Dienerstr. 12
> 80331 München
>
> Registergericht und -nummer: Hamburg, HRB 86891
> Sitz der Gesellschaft: Hamburg
> Geschäftsführer: Graham Law, Katherine Stephens
>
> --
> 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+unsubscribe@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/google-web-toolkit-contributors/CALLujirJ7CD%2B_fRDFyE9kUX%2BCLeeaMbd8JQraWMMp6CWQKtNMQ%40mail.gmail.com.
>
> For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment