mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
make ClassUtil.getJvmClassName work correctly for groovy classes
This commit is contained in:
@@ -30,6 +30,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.ClassUtil;
|
||||
import com.intellij.psi.util.PsiClassUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -106,13 +107,7 @@ public class JavaExecutionUtil {
|
||||
|
||||
@Nullable
|
||||
public static String getRuntimeQualifiedName(final PsiClass aClass) {
|
||||
final PsiClass containingClass = aClass.getContainingClass();
|
||||
if (containingClass != null) {
|
||||
final String parentName = getRuntimeQualifiedName(containingClass);
|
||||
return parentName + "$" + aClass.getName();
|
||||
} else {
|
||||
return aClass.getQualifiedName();
|
||||
}
|
||||
return ClassUtil.getJVMClassName(aClass);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user