Revision: 10399
Author: [email protected]
Date: Fri Jun 24 16:03:25 2011
Log: Fix bug resolving multiple-nested types.
http://gwt-code-reviews.appspot.com/1466808/
Review by: [email protected]
http://code.google.com/p/google-web-toolkit/source/detail?r=10399
Modified:
/trunk/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java
=======================================
--- /trunk/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java Thu Apr
28 06:57:23 2011
+++ /trunk/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java Fri Jun
24 16:03:25 2011
@@ -423,8 +423,10 @@
// resolve an outer type before trying to get the cached inner
String cupName = typeName.substring(0, p);
char[][] chars = CharOperation.splitOn('.', cupName.toCharArray());
- if (lookupEnvironment.getType(chars) != null) {
+ ReferenceBinding outerType = lookupEnvironment.getType(chars);
+ if (outerType != null) {
// outer class was found
+ resolveRecursive(outerType);
chars = CharOperation.splitOn('.', typeName.toCharArray());
type = lookupEnvironment.getCachedType(chars);
if (type == null) {
@@ -471,6 +473,16 @@
}
return false;
}
+
+ /**
+ * Recursively invoking {@link ReferenceBinding#memberTypes()} causes
JDT to
+ * resolve and cache all nested types at arbitrary depth.
+ */
+ private static void resolveRecursive(ReferenceBinding outerType) {
+ for (ReferenceBinding memberType : outerType.memberTypes()) {
+ resolveRecursive(memberType);
+ }
+ }
private AdditionalTypeProviderDelegate additionalTypeProviderDelegate;
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors