Re: [gwt-contrib] GWT compiler optimization breaks some lambdas

2015-10-25 Thread Ignacio Baca Moreno-Torres
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" <
> google-web-toolkit-contributors@googlegroups.com > 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 <
>> ign...@bacamt.com > 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 >> > wrote:
>>>
 Are you using a recent snapshot?
 On Oct 24, 2015 04:40, "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));
> 

Re: [gwt-contrib] GWT compiler optimization breaks some lambdas

2015-10-25 Thread Ignacio Baca Moreno-Torres
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 getResources() {
>> Supplier> store = 
>> requireNonNull(this.store, "REFXXX store");
>> Map 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> resources) {
>> this.store = requireNonNull(Suppliers.memoize(new Supplier> ResourceDescriptor>>() {
>> @Override public Map get() {
>> Provider> ref003 = 
>> requireNonNull(resources, "REF003 resources");
>> Set ref004 = requireNonNull(ref003.get(), 
>> "REF004 resources.get()");
>> ImmutableMap ref002 = 
>> from(ref004).uniqueIndex(
>> new Function() {
>> @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 
>>> 

[gwt-contrib] Gerrit -> Github issue linking

2015-10-25 Thread Jens
Hi,

In Gerrit "Bug: issue " points to Google Code. Do we already have an 
alternative wording for cross linking to Github? Something like "Bug: 
#" maybe? 

-- J.

-- 
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+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/2a50252d-fd29-44cd-9538-45a9e7d91532%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.