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