Fixed a compiler bug that was preventing overrides with generic params from working. Committing a parameterized AsyncCallback.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1409 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
index 71bd9f4..7c9727c 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
@@ -1787,22 +1787,6 @@
}
}
- private boolean areParametersIdentical(MethodBinding a, MethodBinding b) {
- TypeBinding[] params1 = a.parameters;
- TypeBinding[] params2 = b.parameters;
- if (params1.length != params2.length) {
- return false;
- }
-
- for (int i = 0; i < params1.length; ++i) {
- if (params1[i] != params2[i]) {
- return false;
- }
- }
-
- return true;
- }
-
private JLocalDeclarationStatement createLocalDeclaration(SourceInfo info,
JLocal arrayVar, JExpression value) {
return new JLocalDeclarationStatement(program, info, new JLocalRef(
@@ -2160,14 +2144,12 @@
// See if this class has any uprefs, unless this class is myself
if (binding.declaringClass != searchThisType) {
- MethodBinding result = searchThisType.getExactMethod(binding.selector,
- binding.parameters, null);
-
- if (result != null) {
- if (areParametersIdentical(binding, result)) {
- JMethod upRef = (JMethod) typeMap.get(result);
+ for (MethodBinding tryMethod : searchThisType.getMethods(binding.selector)) {
+ if (binding.areParameterErasuresEqual(tryMethod)) {
+ JMethod upRef = (JMethod) typeMap.get(tryMethod);
if (!method.overrides.contains(upRef)) {
method.overrides.add(upRef);
+ break;
}
}
}
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarServiceAsync.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarServiceAsync.java
index 1d3210d..b165117 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarServiceAsync.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarServiceAsync.java
@@ -19,7 +19,7 @@
/**
* The interface for the RPC server endpoint that provides school calendar
- * information for clients that will be calling aysychronously.
+ * information for clients that will be calling asynchronously.
*/
public interface SchoolCalendarServiceAsync {
diff --git a/user/src/com/google/gwt/user/client/rpc/AsyncCallback.java b/user/src/com/google/gwt/user/client/rpc/AsyncCallback.java
index 2f05dda..ee958d6 100644
--- a/user/src/com/google/gwt/user/client/rpc/AsyncCallback.java
+++ b/user/src/com/google/gwt/user/client/rpc/AsyncCallback.java
@@ -81,8 +81,10 @@
* </pre>
*
* </p>
+ *
+ * @param <T>
*/
-public interface AsyncCallback {
+public interface AsyncCallback<T> {
/**
* Called when an asynchronous call fails to complete normally.
@@ -108,5 +110,5 @@
* the parameter will be the boxed version of the primitive (for example, an
* <code>int</code> return type becomes an {@link Integer}.
*/
- void onSuccess(Object result);
+ void onSuccess(T result);
}