diff --git a/java/java-impl/src/com/intellij/ide/hierarchy/call/CallerMethodsTreeStructure.java b/java/java-impl/src/com/intellij/ide/hierarchy/call/CallerMethodsTreeStructure.java index 6b4f9f731fa2..d813217bb97a 100644 --- a/java/java-impl/src/com/intellij/ide/hierarchy/call/CallerMethodsTreeStructure.java +++ b/java/java-impl/src/com/intellij/ide/hierarchy/call/CallerMethodsTreeStructure.java @@ -130,7 +130,9 @@ public final class CallerMethodsTreeStructure extends HierarchyTreeStructure { .search(enclosingElement, searchScope).findAll().stream() .map(PsiReference::getElement) .distinct() - .map(e -> new CallHierarchyNodeDescriptor(myProject, nodeDescriptor, e, false, false)).toArray(); + .map(e -> new CallHierarchyNodeDescriptor(myProject, nodeDescriptor, e, false, false)) + .filter(n -> n.getEnclosingElement() != null) + .toArray(); } private static boolean areClassesRelated(@NotNull PsiClass expectedQualifierClass, @NotNull PsiClass receiverClass) { diff --git a/java/java-tests/testData/ide/hierarchy/call/StaticallyImportedField/A.java b/java/java-tests/testData/ide/hierarchy/call/StaticallyImportedField/A.java new file mode 100644 index 000000000000..03113d305b96 --- /dev/null +++ b/java/java-tests/testData/ide/hierarchy/call/StaticallyImportedField/A.java @@ -0,0 +1,8 @@ +import static java.util.Collections.EMPTY_LIST; + +public class A { + + public static void main(String[] args) { + System.out.println(EMPTY_LIST); + } +} diff --git a/java/java-tests/testData/ide/hierarchy/call/StaticallyImportedField/verification.xml b/java/java-tests/testData/ide/hierarchy/call/StaticallyImportedField/verification.xml new file mode 100644 index 000000000000..dbaf07d75f85 --- /dev/null +++ b/java/java-tests/testData/ide/hierarchy/call/StaticallyImportedField/verification.xml @@ -0,0 +1,3 @@ + + + diff --git a/java/java-tests/testSrc/com/intellij/java/ide/hierarchy/JavaCallHierarchyTest.java b/java/java-tests/testSrc/com/intellij/java/ide/hierarchy/JavaCallHierarchyTest.java index ff4a49d481b8..b18b8206c3a3 100644 --- a/java/java-tests/testSrc/com/intellij/java/ide/hierarchy/JavaCallHierarchyTest.java +++ b/java/java-tests/testSrc/com/intellij/java/ide/hierarchy/JavaCallHierarchyTest.java @@ -96,11 +96,7 @@ public class JavaCallHierarchyTest extends HierarchyViewTestBase { } public void testMethodRef() throws Exception { - doHierarchyTest(() -> { - PsiClass psiClass = JavaPsiFacade.getInstance(getProject()).findClass("A", ProjectScope.getProjectScope(getProject())); - PsiMember method = psiClass.findMethodsByName("testMethod", false) [0]; - return new CalleeMethodsTreeStructure(getProject(), method, HierarchyBrowserBaseEx.SCOPE_PROJECT); - }, JavaHierarchyUtil.getComparator(myProject),"A.java"); + doJavaCalleeTypeHierarchyTest("A", "testMethod", "A.java"); } public void testField() throws Exception { @@ -111,6 +107,14 @@ public class JavaCallHierarchyTest extends HierarchyViewTestBase { }, JavaHierarchyUtil.getComparator(myProject),"A.java"); } + public void testStaticallyImportedField() throws Exception { + doHierarchyTest(() -> { + PsiClass psiClass = JavaPsiFacade.getInstance(getProject()).findClass("java.util.Collections", ProjectScope.getAllScope(getProject())); + PsiMember field = psiClass.findFieldByName("EMPTY_LIST", false); + return new CallerMethodsTreeStructure(getProject(), field, HierarchyBrowserBaseEx.SCOPE_PROJECT); + }, JavaHierarchyUtil.getComparator(myProject), "A.java"); + } + public void testAnonymous() throws Exception { doJavaCallerTypeHierarchyTest("A", "A", "A.java"); // IDEA-56615 }