Merge "Check DexType created by the DexItemFactory"
diff --git a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
index 80dea00..7dc77de 100644
--- a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
+++ b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
@@ -317,6 +317,8 @@
     DexType result = types.get(descriptor);
     if (result == null) {
       result = new DexType(descriptor);
+      assert result.isArrayType() || result.isClassType() || result.isPrimitiveType() ||
+          result.isVoidType();
       assert !internalSentinels.contains(result);
       types.put(descriptor, result);
     }
diff --git a/src/main/java/com/android/tools/r8/graph/DexType.java b/src/main/java/com/android/tools/r8/graph/DexType.java
index a371684..0d81ea4 100644
--- a/src/main/java/com/android/tools/r8/graph/DexType.java
+++ b/src/main/java/com/android/tools/r8/graph/DexType.java
@@ -288,8 +288,12 @@
   }
 
   public boolean isPrimitiveType() {
-    char firstChar = (char) descriptor.content[0];
-    return firstChar != 'L' && firstChar != '[';
+    return isPrimitiveType((char) descriptor.content[0]);
+  }
+
+  private boolean isPrimitiveType(char c) {
+    return c == 'Z' || c == 'B' || c == 'S' || c == 'C' || c == 'I' || c == 'F' || c == 'J'
+        || c == 'D';
   }
 
   public boolean isVoidType() {
@@ -310,19 +314,7 @@
     if (!isArrayType()) {
       return false;
     }
-    switch (descriptor.content[1]) {
-      case 'Z':  // boolean
-      case 'B':  // byte
-      case 'S':  // short
-      case 'C':  // char
-      case 'I':  // int
-      case 'F':  // float
-      case 'J':  // long
-      case 'D':  // double
-        return true;
-      default:
-        return false;
-    }
+    return isPrimitiveType((char) descriptor.content[1]);
   }
 
   public int elementSizeForPrimitiveArrayType() {