Author: [email protected]
Date: Tue Mar 10 13:20:06 2009
New Revision: 4974

Modified:
    trunk/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
    trunk/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java

Log:
When adding a bridge method (r4943), set up its override
field to reliably hold the transitive overrides in
addition to the immediate overrides.

Review by: scottb


Modified:  
trunk/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
==============================================================================
--- trunk/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java  
(original)
+++ trunk/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java Tue  
Mar 10 13:20:06 2009
@@ -2111,6 +2111,7 @@
        for (JMethod over : overrides) {
          if (!classHasMethodOverriding(clazz, over)) {
            bridgeMethod.overrides.add(over);
+          bridgeMethod.overrides.addAll(over.overrides);
          }
        }
      }

Modified: trunk/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
==============================================================================
--- trunk/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java       
(original)
+++ trunk/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java       Tue Mar 
 
10 13:20:06 2009
@@ -28,6 +28,12 @@
  @SuppressWarnings("unused")
  public class CompilerTest extends GWTTestCase {

+  interface Silly { }
+
+  interface SillyComparable<T extends Silly> extends Comparable<T> {
+    int compareTo(T obj);
+  }
+
    private abstract static class AbstractSuper {
      public static String foo() {
        if (FALSE) {
@@ -294,6 +300,25 @@
      Bm2KeyNav<?> obs = new Bm2KeyNav() {
      };
      assertEquals(5, obs.handleEvent(null));
+  }
+
+  /**
+   * When adding a bridge method, be sure to handle transitive overrides
+   * relationships.
+   */
+  public void testBridgeMethods3() {
+    class AbstractFoo implements Silly {
+      public int compareTo(AbstractFoo obj) {
+        if (FALSE) {
+          return compareTo(obj);
+        }
+        return 0;
+      }
+    }
+    class MyFoo extends AbstractFoo implements  
SillyComparable<AbstractFoo> {
+    }
+
+    assertEquals(0, new MyFoo().compareTo(new MyFoo()));
    }

    public void testCastOptimizer() {

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to