make ClassUtil.getJvmClassName work correctly for groovy classes

This commit is contained in:
peter
2012-01-26 18:31:32 +01:00
parent ac49354dbf
commit 6bab1d7005
2 changed files with 12 additions and 24 deletions
@@ -245,26 +245,19 @@ public class ClassUtil {
@Nullable
public static String getJVMClassName(PsiClass aClass) {
final String qName = aClass.getQualifiedName();
if (qName == null) return null;
return replaceDotsWithDollars(qName, aClass);
}
private static String replaceDotsWithDollars(final String qName, PsiClass aClass) {
StringBuilder qNameBuffer = new StringBuilder(qName);
int fromIndex = qNameBuffer.length();
PsiElement parent = aClass.getParent();
while (parent instanceof PsiClass) {
final int dotIndex = qNameBuffer.lastIndexOf(".", fromIndex);
if (dotIndex < 0) break;
qNameBuffer.replace(dotIndex, dotIndex + 1, "$");
fromIndex = dotIndex - 1;
parent = parent.getParent();
final PsiClass containingClass = aClass.getContainingClass();
if (containingClass != null) {
String parentName = getJVMClassName(containingClass);
if (parentName == null) {
return null;
}
return parentName + "$" + aClass.getName();
}
return qNameBuffer.toString();
return aClass.getQualifiedName();
}
@Nullable
public static PsiClass findPsiClassByJVMName(final PsiManager manager, final String jvmClassName) {
return findPsiClass(manager, jvmClassName.replace('/', '.'), null, true);