mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-CR-1748 refactoring enum values highlighted as used in case its class is @EnumSource value
GitOrigin-RevId: 5e824c37cb030bb3332318cf7c9920090a25b412
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b5edc2f094
commit
10fe15dda9
+14
-15
@@ -4,7 +4,6 @@ package com.intellij.execution.junit2.inspection;
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.daemon.ImplicitUsageProvider;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.PsiEnumConstantImpl;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.PsiSearchHelper;
|
||||
@@ -28,8 +27,12 @@ public class JUnitImplicitUsageProvider implements ImplicitUsageProvider {
|
||||
|
||||
@Override
|
||||
public boolean isImplicitUsage(@NotNull PsiElement element) {
|
||||
if (element instanceof PsiEnumConstantImpl) {
|
||||
PsiClass psiClass = ((PsiEnumConstantImpl)element).getContainingClass();
|
||||
return isReferencedInsideEnumSourceAnnotation(element);
|
||||
}
|
||||
|
||||
private static boolean isReferencedInsideEnumSourceAnnotation(@NotNull PsiElement element) {
|
||||
if (element instanceof PsiEnumConstant) {
|
||||
PsiClass psiClass = ((PsiEnumConstant)element).getContainingClass();
|
||||
String className = psiClass != null ? psiClass.getName() : null;
|
||||
if (className == null) return false;
|
||||
SearchScope useScope = psiClass.getUseScope();
|
||||
@@ -46,23 +49,19 @@ public class JUnitImplicitUsageProvider implements ImplicitUsageProvider {
|
||||
return ReferencesSearch.search(psiClass, useScope, false)
|
||||
.anyMatch(reference -> {
|
||||
PsiElement referenceElement = reference.getElement();
|
||||
return isReferencedInsideEnumSourceAnnotation(referenceElement);
|
||||
PsiAnnotation annotation = PsiTreeUtil.getParentOfType(referenceElement, PsiAnnotation.class);
|
||||
if (annotation != null) {
|
||||
String annotationName = annotation.getQualifiedName();
|
||||
if (ENUM_SOURCE.equals(annotationName) && annotation.getAttributes().size() == 1) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean isReferencedInsideEnumSourceAnnotation(PsiElement referenceElement) {
|
||||
PsiAnnotation annotation = PsiTreeUtil.getParentOfType(referenceElement, PsiAnnotation.class);
|
||||
if (annotation != null) {
|
||||
String annotationName = annotation.getQualifiedName();
|
||||
if (ENUM_SOURCE.equals(annotationName) && annotation.getAttributes().size() == 1) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isImplicitRead(@NotNull PsiElement element) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user