Fix bug in UnifyAst where non-null array types failed to canonicalize.

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

Review by: jbrosenberg@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10416 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java b/dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java
index f1a4246..65c896b 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java
@@ -1070,19 +1070,24 @@
   }
 
   private JReferenceType translate(JReferenceType type) {
+    if (type instanceof JNonNullType) {
+      return translate(type.getUnderlyingType()).getNonNull();
+    }
+
     if (type instanceof JArrayType) {
       JArrayType arrayType = (JArrayType) type;
-      type = program.getTypeArray(translate(arrayType.getElementType()));
-    } else if (type.isExternal()) {
+      return program.getTypeArray(translate(arrayType.getElementType()));
+    }
+
+    if (type.isExternal()) {
       if (type instanceof JDeclaredType) {
         type = translate((JDeclaredType) type);
-      } else if (type instanceof JNonNullType) {
-        type = translate(type.getUnderlyingType()).getNonNull();
       } else {
         assert false : "Unknown external type";
       }
+      assert !type.isExternal();
     }
-    assert !type.isExternal();
+
     return type;
   }