IDEA-194817 Show enum constant usages on mouse middle-click

This commit is contained in:
Alexey Kudravtsev
2018-12-03 11:57:46 +03:00
parent b1ee12632e
commit ae3b36fd74
3 changed files with 7 additions and 18 deletions
@@ -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()
@@ -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);
}
}