@SuppressWarnings({"HardCodedStringLiteral"}) private static JVMName getJVMSignature( @Nullable PsiMethod method, boolean constructor, @Nullable PsiClass declaringClass) { JVMNameBuffer signature = new JVMNameBuffer(); signature.append("("); if (constructor) { if (declaringClass != null) { final PsiClass outerClass = declaringClass.getContainingClass(); if (outerClass != null) { // declaring class is an inner class if (!declaringClass.hasModifierProperty(PsiModifier.STATIC)) { appendJvmClassQualifiedName(signature, getJVMQualifiedName(outerClass)); } } } } if (method != null) { for (PsiParameter psiParameter : method.getParameterList().getParameters()) { appendJVMSignature(signature, psiParameter.getType()); } } signature.append(")"); if (!constructor && method != null) { appendJVMSignature(signature, method.getReturnType()); } else { signature.append(new JVMRawText("V")); } return signature.toName(); }
public static JVMName getJVMQualifiedName(PsiType psiType) { if (psiType instanceof PsiArrayType) { final PsiArrayType arrayType = (PsiArrayType) psiType; JVMName jvmName = getJVMQualifiedName(arrayType.getComponentType()); JVMNameBuffer buffer = new JVMNameBuffer(); buffer.append(jvmName); buffer.append("[]"); return buffer.toName(); } PsiClass psiClass = PsiUtil.resolveClassInType(psiType); if (psiClass == null) { return getJVMRawText(psiType.getCanonicalText()); } else { return getJVMQualifiedName(psiClass); } }