Roberto Lublinerman has uploaded a new change for review.
https://gwt-review.googlesource.com/2470
Change subject: Avoid creating anonymous inner classes with wildcard type
parameters.
......................................................................
Avoid creating anonymous inner classes with wildcard type parameters.
Under Java 7 wildcards can not be type parameters of superclasses in the
extends clause
nor superinterfaces in the implementing clause. Anonymous inner classes can
not have wildcards
in their type parameters.
Change-Id: Ifbcd6ecec455512a7da5eb473c6bf2e9f402f0ea
---
M dev/core/src/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
M dev/core/src/com/google/gwt/dev/javac/typemodel/JParameterizedType.java
M user/src/com/google/gwt/uibinder/rebind/HandlerEvaluator.java
3 files changed, 40 insertions(+), 2 deletions(-)
diff --git
a/dev/core/src/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
b/dev/core/src/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
index 3f26dec..0523c8d 100644
--- a/dev/core/src/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
+++ b/dev/core/src/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
@@ -32,4 +32,11 @@
JClassType getRawType();
JClassType[] getTypeArgs();
+
+ /**
+ * Returns whether the parametrized type has any wildcards.
+ *
+ * @return {@code true} if wildcards are present, {@code false}
otherwise.
+ */
+ boolean hasWildcards();
}
diff --git
a/dev/core/src/com/google/gwt/dev/javac/typemodel/JParameterizedType.java
b/dev/core/src/com/google/gwt/dev/javac/typemodel/JParameterizedType.java
index f6b98eb..6453bb9 100644
---
a/dev/core/src/com/google/gwt/dev/javac/typemodel/JParameterizedType.java
+++
b/dev/core/src/com/google/gwt/dev/javac/typemodel/JParameterizedType.java
@@ -330,6 +330,25 @@
}
@Override
+ /**
+ * Returns whether the parametrized type has any wildcards.
+ *
+ * @return {@code true} if wildcards are present, {@code false}
otherwise.
+ */
+ public boolean hasWildcards() {
+ for (JClassType parameter : getTypeArgs()) {
+ if (parameter.isWildcard() != null) {
+ return true;
+ }
+ if (parameter.isParameterized() != null &&
+ parameter.isParameterized().hasWildcards()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
public JGenericType isGenericType() {
return null;
}
diff --git a/user/src/com/google/gwt/uibinder/rebind/HandlerEvaluator.java
b/user/src/com/google/gwt/uibinder/rebind/HandlerEvaluator.java
index afbecbd..af6f3f2 100644
--- a/user/src/com/google/gwt/uibinder/rebind/HandlerEvaluator.java
+++ b/user/src/com/google/gwt/uibinder/rebind/HandlerEvaluator.java
@@ -199,12 +199,24 @@
eventType.getName());
}
+ // Avoid wildcards when creating anonymous classes as it does not
compile under Java 7,
+ // use raw types when this happens.
+ String handlerSourceName =
+ handlerType.isParameterized() != null &&
handlerType.isParameterized().hasWildcards() ?
+ handlerType.getQualifiedSourceName() :
+ handlerType.getParameterizedQualifiedSourceName();
+
+ String eventSourceName =
+ eventType.isParameterized() != null &&
eventType.isParameterized().hasWildcards() ?
+ eventType.getQualifiedSourceName() :
+ eventType.getParameterizedQualifiedSourceName();
+
writer.newline();
writer.write("final %1$s %2$s = new %1$s() {",
- handlerType.getParameterizedQualifiedSourceName(), handlerVarName);
+ handlerSourceName, handlerVarName);
writer.indent();
writer.write("public void %1$s(%2$s event) {", methods[0].getName(),
- eventType.getParameterizedQualifiedSourceName());
+ eventSourceName);
writer.indent();
writer.write("%1$s.%2$s(event);", uiOwner, boundMethod);
writer.outdent();
--
To view, visit https://gwt-review.googlesource.com/2470
To unsubscribe, visit https://gwt-review.googlesource.com/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifbcd6ecec455512a7da5eb473c6bf2e9f402f0ea
Gerrit-PatchSet: 1
Gerrit-Project: gwt
Gerrit-Branch: master
Gerrit-Owner: Roberto Lublinerman <[email protected]>
--
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors
---
You received this message because you are subscribed to the Google Groups "Google Web Toolkit Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.