Incorporated Scott's comments.
Patch by: amitmanjhi
git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4463 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
index f5a77bd..e2653a1 100644
--- a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
+++ b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
@@ -48,7 +48,7 @@
static class AnonymousClassVisitor extends EmptyVisitor {
/*
- * array of classNames of inner clases that aren't synthetic.
+ * array of classNames of inner clases that aren't synthetic classes.
*/
List<String> classNames = new ArrayList<String>();
diff --git a/dev/core/src/com/google/gwt/dev/javac/GeneratedClassnameComparator.java b/dev/core/src/com/google/gwt/dev/javac/GeneratedClassnameComparator.java
index e7280b2..bdd642f 100644
--- a/dev/core/src/com/google/gwt/dev/javac/GeneratedClassnameComparator.java
+++ b/dev/core/src/com/google/gwt/dev/javac/GeneratedClassnameComparator.java
@@ -17,6 +17,16 @@
import java.util.Comparator;
+/**
+ * Comparator to sort the compiler-generated classNames so that they can be
+ * correlated. Examples of sorting orders by the comparator:
+ *
+ * <pre>
+ * <ul>
+ * <li> Foo$1 < Foo$2 < Foo$3 < ... < Foo$10
+ * <li> Foo$1 < Foo$2 < Foo$1$1 < Foo$1$2 < Foo$2$1 < Foo$2$2 < Foo$2$Baz
+ * </pre>
+ */
class GeneratedClassnameComparator implements Comparator<String> {
public int compare(String arg0, String arg1) {
diff --git a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
index 1b75d8a..143a3c3 100644
--- a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
+++ b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
@@ -383,6 +383,7 @@
}
emmaStrategy = EmmaStrategy.get(emmaAvailable);
}
+
/**
* Checks if the class names is generated. Accepts any classes whose names
* match .+$\d+($.*)? (handling named classes within anonymous classes).
@@ -716,7 +717,7 @@
* find it on disk. Typically this is a synthetic class added by the
* compiler.
*/
- if (shouldLoadClassFromDisk(className)) {
+ if (typeHasCompilationUnit(className) && isClassnameGenerated(className)) {
/*
* modification time = 0 ensures that whatever is on the disk is always
* loaded.
@@ -755,9 +756,8 @@
}
/**
- * Returns the compilationUnit corresponding to the className.
- * <p>
- * Not considering classnames where a $ sign appears.
+ * Returns the compilationUnit corresponding to the className. For nested
+ * classes, the unit corresponding to the top level type is returned.
*/
private CompilationUnit getUnitForClassName(String className) {
String mainTypeName = className;
@@ -786,14 +786,10 @@
}
}
- private boolean isBaseClassInGwt(String className) {
+ private boolean typeHasCompilationUnit(String className) {
return getUnitForClassName(className) != null;
}
- private boolean shouldLoadClassFromDisk(String className) {
- return isBaseClassInGwt(className) && isClassnameGenerated(className);
- }
-
/**
* Tricky one, this. Reaches over into this modules's JavaScriptHost class and
* sets its static 'host' field to our module space.