function ILe(a) {
var b;
b = Erb(PDl(a.a, 'REFXXX store'), 164);
Erb(PDl(Erb(b.De(), 82), 'REFXXX store.get()'), 82);
return Erb(PDl(undefined, 'REFXXX store.get().values()'), 6)
}
This was the actual b.De() function.
u9c(701, 1, { 164: 1, 701: 1, 3: 1 }, Uh);
_.De = function Vh() {
var a;
if (!this.b) {
if (!this.b) {
a = this.a.De();
this.c = a;
this.b = true;
return a
}
}
return this.c
};
_.Bd = function Wh() { return 'Suppliers.memoize(' + this.a + ')' };
_.b = false;
var ltb = epl(tbm, 'Suppliers/MemoizingSupplier', 701);
And the highlighted this.a.De() call the Supplier.get(). (this return
a,b,c; is pretty obscure!, equivalent to a;b;return c;)
_.De = function RLe() {
var a, b, c;
return a = Erb(iEl(this.a, 'REF003 resources'), 38),
b = Erb(iEl(Erb(a.De(), 62), 'REF004 resources.get()'), 62),
c = Vu(new $u(b,b), new TLe),
Erb(iEl(c, 'REF001'), 82)
}
On Sunday, October 25, 2015 at 12:18:01 PM UTC+1, Ignacio Baca
Moreno-Torres wrote:
>
> Sorry, this is pretty confusing, just comment that the lamba cases
> described previously still (in HEAD) get solved when lamdas are changed to
> anonymous classes.
>
> On Sunday, October 25, 2015 at 12:08:09 PM UTC+1, Ignacio Baca
> Moreno-Torres wrote:
>>
>> Next, I show two methods, this.getResource and the 'this' constructor.
>> getResource get wrong because the output never assigns the map variable.
>> And the constructor is showed to see how this.store is assigned. This time,
>> the anonymous class do not solves the problem.
>>
>>
>> public Collection<ResourceDescriptor<?>> getResources() {
>> Supplier<Map<Class<?>, ResourceDescriptor<?>>> store =
>> requireNonNull(this.store, "REFXXX store");
>> Map<Class<?>, ResourceDescriptor<?>> map = requireNonNull(store.get(),
>> "REFXXX store.get()");
>> return requireNonNull(map.values(),"REFXXX store.get().values()");
>>
>> }
>>
>>
>> function ILe(a) {
>> var b;
>> b = Erb(PDl(a.a, 'REFXXX store'), 164);
>> *Erb(PDl(Erb(b.De(), 82), 'REFXXX store.get()'), 82);*
>> return Erb(PDl(undefined, 'REFXXX store.get().values()'), 6)
>> }
>>
>>
>> And this is how this.store is initialized (also with lot of
>> requireNotNull to easier matching between java and js)
>>
>> @Inject
>> public ResourceRegistry(Provider<Set<ResourceDescriptor<?>>> resources) {
>> this.store = requireNonNull(Suppliers.memoize(new Supplier<Map<Class<?>,
>> ResourceDescriptor<?>>>() {
>> @Override public Map<Class<?>, ResourceDescriptor<?>> get() {
>> Provider<Set<ResourceDescriptor<?>>> ref003 =
>> requireNonNull(resources, "REF003 resources");
>> Set<ResourceDescriptor<?>> ref004 = requireNonNull(ref003.get(),
>> "REF004 resources.get()");
>> ImmutableMap<Class<?>, ResourceDescriptor<?>> ref002 =
>> from(ref004).uniqueIndex(
>> new Function<ResourceDescriptor<?>, Class<?>>() {
>> @Nullable @Override
>> public Class<?> apply(@Nullable
>> ResourceDescriptor<?> resourceDescriptor) {
>> return
>> requireNonNull(resourceDescriptor.getType(), "REF002");
>> }
>> });
>> return requireNonNull(ref002, "REF001");
>> }
>> }), "REF000");
>> }
>>
>>
>> o9c(2629, 1, Lwm, KLe);
>> _.De = function LLe() {
>> var a, b, c;
>> return a = Erb(PDl(this.a, 'REF003 resources'), 38),
>> b = Erb(PDl(Erb(a.De(), 62), 'REF004 resources.get()'), 62),
>> c = Vu(new $u(b,b), new NLe),
>> Erb(PDl(c, 'REF001'), 82)
>> };
>> var s_b = Lol(dvm, 'ResourceRegistry/1', 2629);
>>
>> function MLe(a) {
>> return Erb(PDl(a.bw(), 'REF002'), 23)
>> }
>>
>> function JLe(a) {
>> this.a = Erb(PDl(Th(new KLe(a)), 'REF000'), 164)
>> }
>>
>> I think this is the highlighted b.De
>>
>> var ltb = Lol(Uam, 'Suppliers/MemoizingSupplier', 701);
>> o9c(702, 1, {
>> 164: 1,
>> 702: 1,
>> 3: 1
>> }, Xh);
>> _.zd = function Yh(a) {
>> var b;
>> if (Mrb(a, 702)) {
>> b = Erb(a, 702);
>> return Jf(this.a, b.a)
>> }
>> return false
>> };
>> _.De = function Zh() {
>> return this.a
>> }
>> ...
>>
>>
>> On Sunday, October 25, 2015 at 10:43:58 AM UTC+1, Ignacio Baca
>> Moreno-Torres wrote:
>>>
>>> Recompiled using HEAD dcea13b1d223513418c90c34324ac6929059de3c, with no
>>> JsInterop and optimization 1.
>>> function $Xj(a, b) {
>>> var c, d, e, f;
>>> JDl(b, 'response required');
>>> JDl(null .V0(), 'response.uuid required');
>>> a.g = null .V0();
>>> c = false;
>>> for (f = null .V0().V0(); f.Md(); ) {
>>> d = Irb(f.Nd());
>>> c = c | _Xj(a, d)
>>> }
>>> for (e = null .V0().V0(); e.Md(); ) {
>>> d = Frb(e.Nd(), 6163);
>>> aYj(a, d)
>>> }
>>> c && B8l(a.d, a.c)
>>> }
>>>
>>> net.ltgt.gwt:gwt-maven-plugin configuration
>>> [DEBUG] Configuring mojo
>>> 'net.ltgt.gwt.maven:gwt-maven-plugin:1.0-rc-2:compile' with basic
>>> configurator -->
>>> [DEBUG] (f) compilerArgs = [-gen, ???/target/gwt/gen]
>>> [DEBUG] (f) deploy = ???/target/gwt/deploy
>>> [DEBUG] (f) draftCompile = false
>>> [DEBUG] (f) extra = ???/target/gwt/extra
>>> [DEBUG] (f) failOnError = true
>>> [DEBUG] (f) forceCompilation = false
>>> [DEBUG] (f) moduleName = com.app.DraftBundle
>>> [DEBUG] (f) optimize = 1
>>> [DEBUG] (f) project = MavenProject: ???/pom.xml
>>> [DEBUG] (f) skipCompilation = false
>>> [DEBUG] (f) sourceLevel = 1.8
>>> [DEBUG] (f) staleMillis = 0
>>> [DEBUG] (f) style = OBFUSCATED
>>> [DEBUG] (f) webappDirectory = ???/target/app
>>> [DEBUG] (f) workDir = ???/target/gwt/work
>>>
>>> more context (removed long packages_names)
>>> // Java Code (this lambda) -----v
>>> tracker.add(heads.subscribe(ClientTelemetryStore.this::processResponse
>>> ));
>>> // Javascript Output
>>> o9c(2061, 1, {}, M5j);
>>> _.$u = function L5j(a) { $Xj(this.a, a) };
>>> var oQc = Fol(o1m,
>>> 'ClientTelemetryStore/ClientTelemetryStore$__$Action1$__$instance$ClientTelemetryStore$processResponse__LTelemetrySubscription$SubscriptionResponse_2V$Type'
>>> , 2061);
>>>
>>> And... trying to add this extra context, one more failure come up. This
>>> one has appeared after updating to the HEAD dcea13b from 7129828 (sorry, I
>>> said to roberto that I was using 94e4597, but I was really using
>>> *7129828 *7 August 2015 at 13:08:36 GMT+2).
>>>
>>> The new nullified method; although this time is an undefined. So
>>> repeating; this error came up just updating from 7129828 to dcea13b.
>>> // Java Code (this lambda)
>>> -------V
>>> this.store = Suppliers.memoize(() -> from(resources.get()).uniqueIndex(
>>> ResourceDescriptor::getType));
>>> // Javasript Output
>>> o9c(1639, 1, pcm, mRe);
>>> _.Xd = function lRe(a) { return undefined };
>>> var x0b = Fol(Yum,
>>> 'ResourceDescriptor/ResourceRegistry$__$Function$__$static$ResourceDescriptor$getType__LClass_2$Type'
>>> , 1639);
>>>
>>> On Sunday, October 25, 2015 at 3:42:10 AM UTC+1, Roberto Lublinerman
>>> wrote:
>>>
>>> The only thing I can think of is that when the class is created for the
>>> lambda in gwtastbuilder, the super class or implemented interfaces are not
>>> set up correctly.
>>>
>>> I'll check later to see if that is there case.
>>> On Oct 24, 2015 19:07, "'Ray Cromwell' via GWT Contributors" <
>>> [email protected]> wrote:
>>>
>>> Are you using @JsFunction/JsInterop? Unless the implementation has
>>> changed recently, Lambda's are supported in GWT by essentially synthesizing
>>> static inner classes, and so if static inner classes work, but lambda's
>>> don't, it's really weird. The optimization stages no nothing of lambdas and
>>> only see Java classes. The exception is @JsFunction.
>>>
>>>
>>> On Sat, Oct 24, 2015 at 2:37 PM, Ignacio Baca Moreno-Torres <
>>> [email protected]> wrote:
>>>
>>> This was from 94e45975a06ece1b8d65541aaabf833f9d8c7b07 (6 October 2015
>>> at 04:29:19 GMT+2), I'll try tomorrow with HEAD, but looking the
>>> commits looks improbable that the problem has been solved.
>>>
>>> On Sat, Oct 24, 2015 at 10:30 PM 'Roberto Lublinerman' via GWT
>>> Contributors <[email protected]> wrote:
>>>
>>> Are you using a recent snapshot?
>>> On Oct 24, 2015 04:40, "Ignacio Baca Moreno-Torres" <[email protected]>
>>> 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
>>>
>>> ...
>>
>>
--
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/bd26339f-1852-44dc-8e30-58201f79b284%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.