in core/src/main/java/com/spotify/missinglink/PrettyPrinter.java [43:99]
public static String typeDescriptor(String typeDescriptor) {
int arrayLevels = 0;
StringBuilder sb = new StringBuilder();
int i = 0;
for (; i < typeDescriptor.length(); i++) {
char c = typeDescriptor.charAt(i);
switch (c) {
case '[':
arrayLevels++;
break;
case 'L':
while (true) {
i++;
c = typeDescriptor.charAt(i);
if (c == ';') {
break;
}
if (c == '/') {
c = '.';
}
sb.append(c);
}
break;
case 'V':
sb.append("void");
break;
case 'I':
sb.append("int");
break;
case 'S':
sb.append("short");
break;
case 'Z':
sb.append("long");
break;
case 'B':
sb.append("boolean");
break;
case 'D':
sb.append("double");
break;
case 'F':
sb.append("float");
break;
default:
// TODO: remove this once we have fixed the semantics for classname vs type descriptor
return className(typeDescriptor);
// throw new RuntimeException("Unhandled type: " + typeDescriptor);
}
}
for (int j = 0; j < arrayLevels; j++) {
sb.append("[]");
}
return sb.toString();
}