mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
goto implementation: narrow scope to file for private methods()IDEA-184663
This commit is contained in:
@@ -361,6 +361,9 @@ public class JavaTargetElementEvaluator extends TargetElementEvaluatorEx2 implem
|
||||
public SearchScope getSearchScope(Editor editor, @NotNull final PsiElement element) {
|
||||
final PsiReferenceExpression referenceExpression = editor != null ? findReferenceExpression(editor) : null;
|
||||
if (referenceExpression != null && element instanceof PsiMethod) {
|
||||
if (!PsiUtil.canBeOverridden((PsiMethod)element)) {
|
||||
return new LocalSearchScope(element.getContainingFile());
|
||||
}
|
||||
final PsiClass[] memberClass = getClassesWithMember(referenceExpression, (PsiMember)element);
|
||||
if (memberClass != null && memberClass.length == 1) {
|
||||
return CachedValuesManager.getCachedValue(memberClass[0], () -> {
|
||||
|
||||
+14
@@ -16,10 +16,14 @@
|
||||
package com.intellij.java.navigation;
|
||||
|
||||
import com.intellij.JavaTestUtil;
|
||||
import com.intellij.codeInsight.TargetElementUtil;
|
||||
import com.intellij.codeInsight.navigation.GotoTargetHandler;
|
||||
import com.intellij.ide.highlighter.JavaFileType;
|
||||
import com.intellij.openapi.roots.ModuleRootModificationUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.testFramework.IdeaTestUtil;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
import com.intellij.testFramework.fixtures.CodeInsightTestUtil;
|
||||
@@ -358,6 +362,16 @@ public class GotoImplementationHandlerTest extends JavaCodeInsightFixtureTestCas
|
||||
assertSize(2, getTargets(file));
|
||||
}
|
||||
|
||||
public void testScopeForPrivateMethod() {
|
||||
PsiFile file = myFixture.configureByText(JavaFileType.INSTANCE, "class Foo {" +
|
||||
" {f<caret>oo();}" +
|
||||
" private void foo() {}" +
|
||||
"}");
|
||||
PsiClass inheritor = myFixture.addClass("class FooImpl extends Foo {}");
|
||||
SearchScope scope = TargetElementUtil.getInstance().getSearchScope(myFixture.getEditor(), ((PsiJavaFile)file).getClasses()[0].getMethods()[0]);
|
||||
assertFalse(scope.contains(PsiUtilCore.getVirtualFile(inheritor)));
|
||||
}
|
||||
|
||||
public void testAnonymousAndLocalClassesInLibrary() {
|
||||
ModuleRootModificationUtil.addModuleLibrary(
|
||||
myModule,
|
||||
|
||||
Reference in New Issue
Block a user