First pass to ignore generic typing.

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1344 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 d8e364a..9759032 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
@@ -154,6 +154,7 @@
 import org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
 import org.eclipse.jdt.internal.compiler.lookup.MethodScope;
 import org.eclipse.jdt.internal.compiler.lookup.NestedTypeBinding;
+import org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding;
 import org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
 import org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
 import org.eclipse.jdt.internal.compiler.lookup.SyntheticArgumentBinding;
@@ -563,7 +564,7 @@
 
     JExpression processExpression(AllocationExpression x) {
       SourceInfo info = makeSourceInfo(x);
-      SourceTypeBinding typeBinding = (SourceTypeBinding) x.resolvedType;
+      SourceTypeBinding typeBinding = erasure(x.resolvedType);
       if (typeBinding.constantPoolName() == null) {
         /*
          * Weird case: if JDT determines that this local class is totally
@@ -620,7 +621,7 @@
       // Synthetic args for inner classes
       ReferenceBinding targetBinding = b.declaringClass;
       if (targetBinding.isNestedType() && !targetBinding.isStatic()) {
-        NestedTypeBinding nestedBinding = (NestedTypeBinding) targetBinding;
+        NestedTypeBinding nestedBinding = (NestedTypeBinding) erasure(targetBinding);
         // Synthetic this args for inner classes
         if (nestedBinding.enclosingInstances != null) {
           for (int i = 0; i < nestedBinding.enclosingInstances.length; ++i) {
@@ -901,7 +902,8 @@
       SourceInfo info = makeSourceInfo(x);
       JType type = (JType) typeMap.get(x.resolvedType);
       JMethod method = (JMethod) typeMap.get(x.binding);
-      assert (type == method.getType());
+      // TODO
+      //assert (type == method.getType());
 
       JExpression qualifier;
       if (x.receiver instanceof ThisReference) {
@@ -1811,6 +1813,13 @@
       return createVariableRef(info, variable);
     }
 
+    private SourceTypeBinding erasure(TypeBinding typeBinding) {
+      if (typeBinding instanceof ParameterizedTypeBinding) {
+        typeBinding = ((ParameterizedTypeBinding)typeBinding).erasure();
+      }
+      return (SourceTypeBinding)typeBinding;
+    }
+
     /**
      * Get a new label of a particular name, or create a new one if it doesn't
      * exist already.
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeMap.java b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeMap.java
index 4dbef44..0d5b561 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeMap.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeMap.java
@@ -24,6 +24,10 @@
 import org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
 import org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding;
 import org.eclipse.jdt.internal.compiler.lookup.Binding;
+import org.eclipse.jdt.internal.compiler.lookup.ParameterizedFieldBinding;
+import org.eclipse.jdt.internal.compiler.lookup.ParameterizedMethodBinding;
+import org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding;
+import org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
 
 import java.util.IdentityHashMap;
 import java.util.Map;
@@ -48,6 +52,19 @@
   }
 
   public JNode get(Binding binding) {
+    if (binding instanceof TypeVariableBinding) {
+      TypeVariableBinding tvb = (TypeVariableBinding) binding;
+      binding = tvb.erasure();
+    } else if (binding instanceof ParameterizedTypeBinding) {
+      ParameterizedTypeBinding ptb = (ParameterizedTypeBinding) binding;
+      binding = ptb.erasure();
+    } else if (binding instanceof ParameterizedMethodBinding) {
+      ParameterizedMethodBinding pmb = (ParameterizedMethodBinding) binding;
+      binding = pmb.original();
+    } else if (binding instanceof ParameterizedFieldBinding) {
+      ParameterizedFieldBinding pfb = (ParameterizedFieldBinding) binding;
+      binding = pfb.original();
+    }
     JNode result = internalGet(binding);
     if (result == null) {
       InternalCompilerException ice = new InternalCompilerException(