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) {