From 34bd807cd111a5308efc3e4f05c759755db6085d Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 21 Mar 2016 15:20:15 +0100 Subject: [PATCH] another case of IDEA-149939 CCE in com.intellij.execution.stacktrace.StackTraceLine.getMethodLocation causes frozen UI --- .../execution/stacktrace/StackTraceLine.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/stacktrace/StackTraceLine.java b/java/execution/impl/src/com/intellij/execution/stacktrace/StackTraceLine.java index 7079d61bd650..5d956fabdfb3 100644 --- a/java/execution/impl/src/com/intellij/execution/stacktrace/StackTraceLine.java +++ b/java/execution/impl/src/com/intellij/execution/stacktrace/StackTraceLine.java @@ -103,15 +103,16 @@ public class StackTraceLine { final int dollarIndex = className.indexOf('$'); if (dollarIndex != -1) className = className.substring(0, dollarIndex); PsiClass psiClass = findClass(project, className, lineNumber); - if (psiClass == null || (psiClass.getNavigationElement() instanceof PsiCompiledElement)) return null; - psiClass = (PsiClass)psiClass.getNavigationElement(); - final PsiMethod psiMethod = getMethodAtLine(psiClass, methodName, lineNumber); - if (psiMethod != null) { - return new MethodLineLocation(project, psiMethod, PsiLocation.fromPsiElement(psiClass), lineNumber); - } - else { - return null; + PsiElement navElement = psiClass == null ? null : psiClass.getNavigationElement(); + if (psiClass == null || navElement instanceof PsiCompiledElement) return null; + + if (navElement instanceof PsiClass) { + final PsiMethod psiMethod = getMethodAtLine((PsiClass)navElement, methodName, lineNumber); + if (psiMethod != null) { + return new MethodLineLocation(project, psiMethod, PsiLocation.fromPsiElement((PsiClass)navElement), lineNumber); + } } + return null; } private static PsiClass findClass(final Project project, final String className, final int lineNumber) {