mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
include method refs into callees as content of classes was always included (IDEA-173002)
This commit is contained in:
@@ -112,6 +112,12 @@ public final class CalleeMethodsTreeStructure extends HierarchyTreeStructure {
|
||||
methods.add(method);
|
||||
}
|
||||
}
|
||||
else if (child instanceof PsiMethodReferenceExpression) {
|
||||
PsiElement method = ((PsiMethodReferenceExpression)child).resolve();
|
||||
if (method instanceof PsiMethod) {
|
||||
methods.add((PsiMethod)method);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
|
||||
class A {
|
||||
public static String returnAString(String anotherString) {
|
||||
return anotherString;
|
||||
}
|
||||
|
||||
public static void testMethod() {
|
||||
asList("abcd").stream().map(A::returnAString);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<node text="A.testMethod() ()" base="true">
|
||||
<node text="Arrays.asList(T...) (java.util)"/>
|
||||
<node text="Collection.stream() (java.util)">
|
||||
<node text="SynchronizedCollection in Collections.stream() (java.util)"/>
|
||||
<node text="CheckedCollection in Collections.stream() (java.util)"/>
|
||||
<node text="UnmodifiableCollection in Collections.stream() (java.util)">
|
||||
<node text="UnmodifiableEntrySet in UnmodifiableMap in Collections.stream() (java.util)"/>
|
||||
</node>
|
||||
<node text="SetFromMap in Collections.stream() (java.util)"/>
|
||||
<node text="AsLIFOQueue in Collections.stream() (java.util)"/>
|
||||
<node text="CopiesList in Collections.stream() (java.util)"/>
|
||||
<node text="UnmodifiableEntrySet in UnmodifiableMap in Collections.stream() (java.util)"/>
|
||||
</node>
|
||||
<node text="A.returnAString(String) ()"/>
|
||||
<node text="Stream.map(Function<? super T, ? extends R>) (java.util.stream)">
|
||||
<node text="ReferencePipeline.map(Function<? super P_OUT, ? extends R>) (java.util.stream)"/>
|
||||
</node>
|
||||
</node>
|
||||
@@ -2,13 +2,15 @@ package com.intellij.ide.hierarchy;
|
||||
|
||||
import com.intellij.JavaTestUtil;
|
||||
import com.intellij.ide.hierarchy.actions.BrowseTypeHierarchyAction;
|
||||
import com.intellij.ide.hierarchy.call.CalleeMethodsTreeStructure;
|
||||
import com.intellij.ide.hierarchy.call.CallerMethodsTreeStructure;
|
||||
import com.intellij.ide.highlighter.XmlFileType;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.search.ProjectScope;
|
||||
import com.intellij.testFramework.IdeaTestUtil;
|
||||
import com.intellij.testFramework.TestActionEvent;
|
||||
import com.intellij.testFramework.codeInsight.hierarchy.HierarchyViewTestBase;
|
||||
|
||||
@@ -58,6 +60,14 @@ public class JavaCallHierarchyTest extends HierarchyViewTestBase {
|
||||
doJavaCallTypeHierarchyTest("A", "A", "A.java", "B.java");
|
||||
}
|
||||
|
||||
public void testMethodRef() throws Exception {
|
||||
doHierarchyTest(() -> {
|
||||
final PsiClass psiClass = JavaPsiFacade.getInstance(getProject()).findClass("A", ProjectScope.getProjectScope(getProject()));
|
||||
final PsiMethod method = psiClass.findMethodsByName("testMethod", false) [0];
|
||||
return new CalleeMethodsTreeStructure(getProject(), method, HierarchyBrowserBaseEx.SCOPE_PROJECT);
|
||||
}, "A.java");
|
||||
}
|
||||
|
||||
public void testAnonymous2() throws Exception {
|
||||
doJavaCallTypeHierarchyTest("A", "doIt", "A.java");
|
||||
}
|
||||
@@ -69,4 +79,9 @@ public class JavaCallHierarchyTest extends HierarchyViewTestBase {
|
||||
action.beforeActionPerformedUpdate(e);
|
||||
assertTrue(e.getPresentation().isEnabled() && e.getPresentation().isVisible());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Sdk getTestProjectJdk() {
|
||||
return IdeaTestUtil.getMockJdk18();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user