Author: [email protected]
Date: Tue Jun 23 12:53:37 2009
New Revision: 5614

Modified:
     
changes/jat/ihm/dev/core/src/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
     
changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/JavaBinaryOracleImpl.java
     
changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/asm/ResolveParameterizedType.java

Log:
Fix generic type handling in another case where the signature omits the
type parameter, handle the case where there are no binary resources found.


Modified:  
changes/jat/ihm/dev/core/src/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
==============================================================================
---  
changes/jat/ihm/dev/core/src/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
    
(original)
+++  
changes/jat/ihm/dev/core/src/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
    
Tue Jun 23 12:53:37 2009
@@ -99,7 +99,8 @@
      });

      this.typeArgs = Lists.create(typeArgs);
-    assert (this.typeArgs.indexOf(null) == -1);
+    assert (this.typeArgs.indexOf(null) == -1)
+        : "Unresolved typeArg creating JParameterizedType from " +  
baseType;

      // NOTE: Can't perform substitutions until we are done building
    }

Modified:  
changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/JavaBinaryOracleImpl.java
==============================================================================
---  
changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/JavaBinaryOracleImpl.java 
 
(original)
+++  
changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/JavaBinaryOracleImpl.java 
 
Tue Jun 23 12:53:37 2009
@@ -248,9 +248,9 @@
    private Map<String, JavaBinary> binaryMap = new HashMap<String,  
JavaBinary>();
    private Set<String> classNames = new HashSet<String>();

-  private Set<JavaBinary> exposedBinaries;
-  private Map<String, JavaBinary> exposedBinaryMap;
-  private Set<String> exposedClassNames;
+  private Set<JavaBinary> exposedBinaries = Collections.emptySet();
+  private Map<String, JavaBinary> exposedBinaryMap =  
Collections.emptyMap();
+  private Set<String> exposedClassNames = Collections.emptySet();

    private Set<Resource> cachedResources = Collections.emptySet();


Modified:  
changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/asm/ResolveParameterizedType.java
==============================================================================
---  
changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/asm/ResolveParameterizedType.java
  
(original)
+++  
changes/jat/ihm/dev/core/src/com/google/gwt/dev/javac/asm/ResolveParameterizedType.java
  
Tue Jun 23 12:53:37 2009
@@ -199,7 +199,8 @@
      JGenericType genericType = type.isGenericType();
      if (genericType != null) {
        int actual = typeArgs.length;
-      int expected = genericType.getTypeParameters().length;
+      JTypeParameter[] typeParams = genericType.getTypeParameters();
+      int expected = typeParams.length;
        if (actual == 0 && expected > 0) {
          // If no type parameters were supplied, this is a raw type usage.
          type = genericType.getRawType();
@@ -226,11 +227,25 @@
            JClassType[] outerArgs = null;
            JGenericType genericEncGeneric = genericEnc.isGenericType();
            if (genericEncGeneric != null) {
-            JTypeParameter[] typeParams =  
genericEncGeneric.getTypeParameters();
-            int n = typeParams.length;
+            JTypeParameter[] encTypeParams =  
genericEncGeneric.getTypeParameters();
+            int n = encTypeParams.length;
              outerArgs = new JClassType[n];
              for (int i = 0; i < n; ++i) {
-              outerArgs[i] = lookup.lookup(typeParams[i].getName());
+              outerArgs[i] = lookup.lookup(encTypeParams[i].getName());
+              if (outerArgs[i] == null) {
+                // check to see if our current type has a parameter of the  
same
+                // name, and use it if so.
+                for (int j = 0; j < expected; ++j) {
+                  if  
(typeParams[j].getName().equals(encTypeParams[j].getName())) {
+                    outerArgs[i] = typeArgs[j];
+                    break;
+                  }
+                }
+              }
+              assert outerArgs[i] != null
+                  : "Unable to resolve type parameter "
+                    + encTypeParams[i].getName() + " in enclosing type "
+                    + genericEnc + " of type " + genericType;
              }
            }
            outer = (JClassType) resolveGeneric(genericEnc, null, outerArgs);

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to