From 3f104634fe828558716df63125facd3aa7c9da11 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 28 Oct 2016 12:43:08 +0200 Subject: [PATCH] tolerate classes with no containing file, wherever they come from (EA-90345 - NPE: DefaultClassNavigationContributor$.process) --- .../gotoByName/DefaultClassNavigationContributor.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultClassNavigationContributor.java b/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultClassNavigationContributor.java index 8e79c54a351d..a38fc0d914c7 100644 --- a/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultClassNavigationContributor.java +++ b/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultClassNavigationContributor.java @@ -21,6 +21,7 @@ import com.intellij.navigation.NavigationItem; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.MinusculeMatcher; import com.intellij.psi.codeStyle.NameUtil; import com.intellij.psi.presentation.java.SymbolPresentationUtil; @@ -113,7 +114,7 @@ public class DefaultClassNavigationContributor implements ChooseByNameContributo @Override public boolean process(PsiClass aClass) { - if (aClass.getContainingFile().getVirtualFile() == null || !aClass.isPhysical()) return true; + if (!isPhysical(aClass)) return true; if (isAnnotation && !aClass.isAnnotationType()) return true; if (innerMatcher != null) { if (aClass.getContainingClass() == null) return true; @@ -124,4 +125,9 @@ public class DefaultClassNavigationContributor implements ChooseByNameContributo } }, parameters.getSearchScope(), parameters.getIdFilter()); } + + private static boolean isPhysical(PsiClass aClass) { + PsiFile file = aClass.getContainingFile(); + return file != null && file.getVirtualFile() != null && aClass.isPhysical(); + } } \ No newline at end of file