tree 5bc21477c171a3dc006537c7b667d09b9d9af703
parent 5d65009d83fc333d8b8c5fc558f1393b376d542e
author Roberto Lublinerman <rluble@google.com> 1447366365 -0800
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 1447372413 +0000

Make sure synthetic bridge methods are properly rewritten.

Synthetic bridges and the methods they dispatch to have different
signatures and hence different names in regular Java classes.

In the context of js interop we allow to name both the bridge and
the regular method with the same name because it is natural to do
so, e.g.:

  @JsType
  abstract class SomeSuper {
    public abstract SomeSuper m();
  }

  @JsType
  class SubClass extends SomeSuper {
    public SubClass m() { return this; }
  }

In this case SomeSuper.m() has signature m()LSomeSuper; and
SubClass.m() has signature m()LSubClass;. Hence an bridge method
m()LSomeSuper; is created that calls this.m()LSubClass; in SubClass.

In this context both method will be named "m" in JavaScript and it
is OK not to emit the bridge in this case; for simplicity the
generated code will emit the bridge and immediately rewrite it with
the actual concrete method.

Change-Id: I0248b171807d274c23f329b531ccaa71046dbfb7
