diff --git a/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java b/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java index 987a6c8a62b5..89cc65ebeeaf 100644 --- a/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java +++ b/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java @@ -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 diff --git a/java/openapi/src/com/intellij/psi/util/ClassUtil.java b/java/openapi/src/com/intellij/psi/util/ClassUtil.java index 18038c40c13d..d7f8aa2a27c2 100644 --- a/java/openapi/src/com/intellij/psi/util/ClassUtil.java +++ b/java/openapi/src/com/intellij/psi/util/ClassUtil.java @@ -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);