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