mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-194817 Show enum constant usages on mouse middle-click
This commit is contained in:
@@ -22,9 +22,9 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.util.*;
|
||||
|
||||
public class JavaTargetElementEvaluator extends TargetElementEvaluatorEx2 implements TargetElementUtilExtender{
|
||||
public static final int NEW_AS_CONSTRUCTOR = 0x04;
|
||||
public static final int THIS_ACCEPTED = 0x10;
|
||||
public static final int SUPER_ACCEPTED = 0x20;
|
||||
private static final int NEW_AS_CONSTRUCTOR = 0x04;
|
||||
private static final int THIS_ACCEPTED = 0x10;
|
||||
private static final int SUPER_ACCEPTED = 0x20;
|
||||
|
||||
@Override
|
||||
public int getAllAdditionalFlags() {
|
||||
@@ -84,8 +84,7 @@ public class JavaTargetElementEvaluator extends TargetElementEvaluatorEx2 implem
|
||||
private static boolean isEnumConstantReference(final PsiElement element, final PsiElement referenceOrReferencedElement) {
|
||||
return element != null &&
|
||||
element.getParent() instanceof PsiEnumConstant &&
|
||||
(referenceOrReferencedElement instanceof PsiMethod && ((PsiMethod)referenceOrReferencedElement).isConstructor() ||
|
||||
referenceOrReferencedElement instanceof PsiClass);
|
||||
referenceOrReferencedElement instanceof PsiMethod && ((PsiMethod)referenceOrReferencedElement).isConstructor();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -27,7 +27,6 @@ import com.intellij.psi.impl.PsiImplUtil;
|
||||
import com.intellij.psi.impl.java.stubs.JavaStubElementTypes;
|
||||
import com.intellij.psi.impl.java.stubs.PsiFieldStub;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.infos.ClassCandidateInfo;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.psi.stub.JavaStubImplUtil;
|
||||
@@ -259,12 +258,7 @@ public class PsiEnumConstantImpl extends JavaStubPsiElement<PsiFieldStub> implem
|
||||
@NotNull
|
||||
public JavaResolveResult[] multiResolve(boolean incompleteCode) {
|
||||
final JavaPsiFacade facade = JavaPsiFacade.getInstance(getProject());
|
||||
PsiClass containingClass = getContainingClass();
|
||||
if (containingClass.getConstructors().length == 0) {
|
||||
return new JavaResolveResult[] {new ClassCandidateInfo(containingClass, PsiSubstitutor.EMPTY)};
|
||||
}
|
||||
|
||||
PsiClassType type = facade.getElementFactory().createType(containingClass);
|
||||
PsiClassType type = facade.getElementFactory().createType(getContainingClass());
|
||||
return facade.getResolveHelper().multiResolveConstructor(type, getArgumentList(), getElement());
|
||||
}
|
||||
|
||||
@@ -289,9 +283,6 @@ public class PsiEnumConstantImpl extends JavaStubPsiElement<PsiFieldStub> implem
|
||||
|
||||
@Override
|
||||
public boolean isReferenceTo(@NotNull PsiElement element) {
|
||||
if (element instanceof PsiClass && element == getContainingClass() && ((PsiClass)element).getConstructors().length == 0) {
|
||||
return true;
|
||||
}
|
||||
return element instanceof PsiMethod
|
||||
&& ((PsiMethod)element).isConstructor()
|
||||
&& ((PsiMethod)element).getContainingClass() == getContainingClass()
|
||||
|
||||
+2
-3
@@ -111,12 +111,11 @@ public class GotoDeclarationTest extends LightCodeInsightTestCase {
|
||||
assertNotNull("Unexpected null", element);
|
||||
}
|
||||
|
||||
public void testNavigateToEnumClass() {
|
||||
public void testGotoDeclarationOnEnumConstantDoesntNavigateToEnumClass() {
|
||||
configureFromFileText("A.java", "enum A {<caret>G();}");
|
||||
final PsiReference reference = getFile().findReferenceAt(getEditor().getCaretModel().getOffset());
|
||||
assertNotNull(reference);
|
||||
final Collection<PsiElement> candidates = TargetElementUtil.getInstance().getTargetCandidates(reference);
|
||||
assertEquals(candidates.toString(), 1, candidates.size());
|
||||
assertInstanceOf(ContainerUtil.getFirstItem(candidates), PsiClass.class);
|
||||
assertEmpty(candidates);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user