Anonymous classes works correctly in both cases.

El sáb., 24 de octubre de 2015 19:52, 'Ray Cromwell' via GWT Contributors <
[email protected]> escribió:

> Does it still happen if you use an anonymous inner class instead of a
> lambda?
>
> On Sat, Oct 24, 2015 at 4:54 AM, Ignacio Baca Moreno-Torres <
> [email protected]> wrote:
>
>> Other situation producing the same problem. If next code is replaced by
>> lambda and method reference... the next block end up being optimized as if
>> response is always null.
>>
>> //noinspection Convert2Lambda,Anonymous2MethodRef IGP-1732 gwt optimize 
>> incompatible
>> tracker.add(heads.subscribe(new Action1<SubscriptionResponse>() {
>>     @Override public void call(SubscriptionResponse response) {
>>         ClientTelemetryStore.this.processResponse(response);
>>     }
>> }));
>>
>> The processResponse java code.
>>
>> private void processResponse(SubscriptionResponse response) {
>>     Objects.requireNonNull(response, "response required");
>>     Objects.requireNonNull(response.getUuid(), "response.uuid required");
>>     if (uuid == null) uuid = response.getUuid(); // first response
>>     else assert uuid.equals(response.getUuid()) : "subscription uuid 
>> mismatch";
>>     boolean newUnits = false;
>>     for (UnitDescriptor xs : response.getUnits()) {
>>         newUnits |= processUnitCreate(xs);
>>     }
>>     for (ProtoUnit xs : response.getData()) {
>>         processUnitUpdate(xs);
>>     }
>>     // accumulate change updates per response
>>     if (newUnits) tStoresChange.onNext(tStores);
>> }
>>
>> And processResponse js code.
>> function Hak(a, b) {
>>     var c, d, e, f;
>>     lWl(b, 'response required');
>>     lWl(null ._0(), 'response.uuid required');
>>     a.g = null ._0();
>>     c = false;
>>     for (f = null ._0()._0(); f.Nd(); ) {
>>         d = Vub(f.Od());
>>         c = c | Iak(a, d)
>>     }
>>     for (e = null ._0()._0(); e.Nd(); ) {
>>         d = Uub(e.Od(), 6163);
>>         Jak(a, d)
>>     }
>>     c && lrm(a.d, a.c)
>> }
>>
>> On Saturday, October 24, 2015 at 1:40:24 PM UTC+2, Ignacio Baca
>> Moreno-Torres wrote:
>>>
>>> There is a bug which optimizations nullify variables which might not be
>>> null. I'm trying to reproduce the error outside our app but I can't, I'll
>>> continue trying, but for now I going to describe the problem.
>>>
>>> return service.get().getBootstrap().bootstrap().doOnNext(data -> {
>>>     Account account = data.getAccount();
>>>     if (account == null) auth.get().resetSessionData(false);
>>>     else auth.get().setSessionData(account, data.getKeychain());
>>>     theme.get().setCustomization(data.getCustomization());
>>>     analytics.get().init(data.getAnalyticsUserAccount() + ":" + 
>>> data.getAnalyticsDomainName());
>>>     OsmQueryResolver.configureServer(data.getReverseGeocodingUrl());
>>>     final String user = account == null ? "anonymous" : account.getEmail();
>>>     log.fine("Bootstrap data loaded successfully (user=" + user + ")");
>>> });
>>>
>>> Produces the next js code.
>>> function fie(a) {
>>>     var b;
>>>     null .b1();
>>>     bdf(Tub(a.b.Ee(), 388), false);
>>>     Ujf((b = Tub(a.k.Ee(), 937),
>>>     null .b1(),
>>>     b));
>>>     Tub(a.a.Ee(), 6122).VI(null .b1() + ':' + null .b1());
>>>     Ivg(null .b1());
>>>     U_l(cie, 'Bootstrap data loaded successfully (user=anonymous)')
>>> }
>>> BUT! if compile without optimizations (ex. using draft compile) or if
>>> anonymous class is used instead of a lambda, the output js is ok. Next
>>> block contains my current working code.
>>>
>>> //noinspection Convert2Lambda GWT optimize incompatible
>>> return service.get().getBootstrap().bootstrap().doOnNext(new 
>>> Action1<EntryPointData>() {
>>>     @Override public void call(EntryPointData data) {
>>>
>>>
>>> The bootstrap method is a call of reactive restygwt service using this
>>> proyect https://github.com/ibaca/restygwt-rxadapter. I.e. bootstrap
>>> return an Observable which end up making a XMLHttpRequest (a lot of layer
>>> in between), and data is a EntryPoint interface, and the implementation
>>> received is an overlay.
>>>
>>> I know that with this info is almost impossible to discover the problem,
>>> but I put here to see if someone else have similar problem, and maybe some
>>> gwt compiler developer just seeing that may see where is the problem
>>> (improbable). If a get reproduced in a sample project I write back here.
>>>
>> --
>> 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/9dd3316c-68f5-4ed9-8d8c-c7a34f123109%40googlegroups.com
>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/9dd3316c-68f5-4ed9-8d8c-c7a34f123109%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/CAPVRV7eeyyU54B5UQJpk-DKyeTTHxaUrnmZrE-HM32eXP-u1Bg%40mail.gmail.com
> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAPVRV7eeyyU54B5UQJpk-DKyeTTHxaUrnmZrE-HM32eXP-u1Bg%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/CABVWDC670WTm5JXdyzxb1f%2BB2XK5ttOj3atcQDNLZo%2BQPuCNLg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to