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
-~----------~----~----~----~------~----~------~--~---