Suppress additional JDT compile problems.

http://gwt-code-reviews.appspot.com/1461804/

Review by: zundel@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10398 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ReferenceMapper.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ReferenceMapper.java
index 017fe78..e8d863b 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ReferenceMapper.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ReferenceMapper.java
@@ -41,6 +41,7 @@
 import org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
 import org.eclipse.jdt.internal.compiler.lookup.SyntheticArgumentBinding;
 import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -139,19 +140,30 @@
     } else {
       ReferenceBinding refBinding = (ReferenceBinding) binding;
       JDeclaredType declType = createType(refBinding);
-      if (declType instanceof JClassType) {
-        ReferenceBinding superclass = refBinding.superclass();
-        if (superclass != null && superclass.isValidBinding()) {
-          ((JClassType) declType).setSuperClass((JClassType) get(superclass));
-        }
-      }
-      ReferenceBinding[] superInterfaces = refBinding.superInterfaces();
-      if (superInterfaces != null) {
-        for (ReferenceBinding intf : superInterfaces) {
-          if (intf.isValidBinding()) {
-            declType.addImplements((JInterfaceType) get(intf));
+      try {
+        if (declType instanceof JClassType) {
+          ReferenceBinding superclass = refBinding.superclass();
+          if (superclass != null && superclass.isValidBinding()) {
+            ((JClassType) declType).setSuperClass((JClassType) get(superclass));
           }
         }
+        ReferenceBinding[] superInterfaces = refBinding.superInterfaces();
+        if (superInterfaces != null) {
+          for (ReferenceBinding intf : superInterfaces) {
+            if (intf.isValidBinding()) {
+              declType.addImplements((JInterfaceType) get(intf));
+            }
+          }
+        }
+      } catch (AbortCompilation ignored) {
+        /*
+         * The currently-compiling unit has no errors; however, we're running
+         * into a case where it references something with a bad hierarchy. This
+         * doesn't cause an error in the current unit, but it does mean we run
+         * into a wall here trying to construct the hierarchy. Catch the error
+         * so that compilation can proceed; the error units themselves will
+         * eventually cause the full compile to error out.
+         */
       }
       // Emulate clinit method for super clinit calls.
       JMethod clinit =