Also could you try the equivalent lamda that is not a method reference, i.e
(parameters) -> this.processResponse(params); I looked at the way we construct the innerclasses corresponding to lambdas and it looks ok. It would really help if you could narrow it down to a small reprocase that I can run. On Sun, Oct 25, 2015 at 5:23 AM, Ignacio Baca Moreno-Torres < [email protected]> wrote: > 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 > <https://groups.google.com/d/msgid/google-web-toolkit-contributors/bd26339f-1852-44dc-8e30-58201f79b284%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/CAC7T7gkuAfbAF%2Bs73ciuhmOvZ9MgZ6g7Q8yA-KiYOyLdy8Wmiw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
