in javac-ast-extension/src/org/jetbrains/jps/javac/ast/api/JavacRef.java [380:417]
private String calcDescriptor(TypeMirror type) {
return new SimpleTypeVisitor6<String, Void>(null) {
@Override
public String visitPrimitive(PrimitiveType t, Void aVoid) {
switch(t.getKind()) {
case BYTE: return "B";
case CHAR: return "C";
case DOUBLE: return "D";
case FLOAT: return "F";
case INT: return "I";
case LONG:return "J";
case SHORT: return "S";
case BOOLEAN: return "Z";
}
return null;
}
@Override
public String visitArray(ArrayType t, Void aVoid) {
return "[" + visit(t.getComponentType());
}
@Override
public String visitDeclared(DeclaredType t, Void aVoid) {
return "L" + myNameTableCache.parseBinaryName(t.asElement()).replace('.', '/') + ";";
}
@Override
public String visitTypeVariable(TypeVariable t, Void unused) {
return visit(t.getUpperBound());
}
@Override
public String visitUnknown(TypeMirror t, Void param) {
return null;
}
}.visit(type);
}