Synthesize cast operations for type-erased generic method calls.



git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1452 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
index e6621bf..61e4f84 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
@@ -909,8 +909,6 @@
       SourceInfo info = makeSourceInfo(x);
       JType type = (JType) typeMap.get(x.resolvedType);
       JMethod method = (JMethod) typeMap.get(x.binding);
-      // TODO
-      // assert (type == method.getType());
 
       JExpression qualifier;
       if (x.receiver instanceof ThisReference) {
@@ -949,7 +947,13 @@
         }
       }
 
-      return call;
+      if (type != method.getType()) {
+        // Must be a generic; insert a cast operation.
+        JReferenceType toType = (JReferenceType) type;
+        return new JCastOperation(program, info, toType, call);
+      } else {
+        return call;
+      }
     }
 
     JExpression processExpression(NullLiteral x) {