include method refs into callees as content of classes was always included (IDEA-173002)

This commit is contained in:
Anna Kozlova
2017-05-18 13:25:30 +03:00
parent 102eb1c43b
commit 2740fe6831
4 changed files with 52 additions and 1 deletions
@@ -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&lt;? super T, ? extends R&gt;) (java.util.stream)">
<node text="ReferencePipeline.map(Function&lt;? super P_OUT, ? extends R&gt;) (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();
}
}