From 10fe15dda98e85ebaaeec0d35ece8b80389d4e51 Mon Sep 17 00:00:00 2001 From: "Olga.Klisho" Date: Thu, 18 Jun 2020 10:28:14 +0300 Subject: [PATCH] IDEA-CR-1748 refactoring enum values highlighted as used in case its class is @EnumSource value GitOrigin-RevId: 5e824c37cb030bb3332318cf7c9920090a25b412 --- .../JUnitImplicitUsageProvider.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/plugins/junit/src/com/intellij/execution/junit2/inspection/JUnitImplicitUsageProvider.java b/plugins/junit/src/com/intellij/execution/junit2/inspection/JUnitImplicitUsageProvider.java index e390d70b7baa..accbc563681b 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/inspection/JUnitImplicitUsageProvider.java +++ b/plugins/junit/src/com/intellij/execution/junit2/inspection/JUnitImplicitUsageProvider.java @@ -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;