We were only checking for unparameterized types if the raw type alone was instantiable.  This patch checks for unparameterized types if the raw type or any of its subtypes are instantiable.

Found by: rustyshelf
Patch by: mmendez
Review by: scottb

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1332 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java b/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
index c16edc9..20effd4 100644
--- a/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
+++ b/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
@@ -990,10 +990,6 @@
           isSpeculative)) {
         tic.setInstantiable(true);
         anySubtypes = true;
-
-        if (!rawTypeOk) {
-          checkForUnparameterizedType(logger, classType);
-        }
       }
 
       // Speculatively check all subtypes.
@@ -1011,7 +1007,16 @@
         }
       }
 
-      if (!anySubtypes && !isSpeculative) {
+      if (anySubtypes) {
+        if (!rawTypeOk) {
+          /*
+           * There is at least one instantiable type and raw types are
+           * not allowed; check if this type is an unparameterized type.
+           */
+          checkForUnparameterizedType(logger, classType);
+        }
+      } else if (!isSpeculative) {
+        // No instantiable types were found
         logger.log(
             getLogLevel(isSpeculative),
             "Type '"