mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-30 10:20:15 +07:00
[java] consider enum constants used in batch inspection when valueOf() is called (IDEA-293797)
GitOrigin-RevId: 787c7356063bfbc11bbdc751dba55dd76f142e84
This commit is contained in:
committed by
intellij-monorepo-bot
parent
362d0555e5
commit
32ee8e3135
@@ -272,6 +272,9 @@ public final class RefJavaUtilImpl extends RefJavaUtil {
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (refResolved == null && psiResolved instanceof PsiMethod method) {
|
||||
markEnumUsedIfValuesMethod(method, node);
|
||||
}
|
||||
|
||||
if (psiResolved instanceof PsiMember psiMember) {
|
||||
//TODO support kotlin
|
||||
@@ -285,6 +288,27 @@ public final class RefJavaUtilImpl extends RefJavaUtil {
|
||||
return true;
|
||||
}
|
||||
|
||||
private void markEnumUsedIfValuesMethod(PsiMethod psiWhat, UExpression expression) {
|
||||
//TODO support kotlin enums
|
||||
final PsiClass containingClass = psiWhat.getContainingClass();
|
||||
if (containingClass == null || !containingClass.isEnum()) {
|
||||
return;
|
||||
}
|
||||
String methodName = psiWhat.getName();
|
||||
if (!"values".equals(methodName) && !"valueOf".equals(methodName)) {
|
||||
return;
|
||||
}
|
||||
for (PsiField enumConstant : containingClass.getFields()) {
|
||||
if (enumConstant instanceof PsiEnumConstant) {
|
||||
final RefJavaElementImpl enumConstantReference = (RefJavaElementImpl)refFrom.getRefManager().getReference(enumConstant);
|
||||
if (enumConstantReference != null) {
|
||||
refFrom.addOutReference(enumConstantReference);
|
||||
enumConstantReference.markReferenced(refFrom, false, true, expression);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visitCallableReferenceExpression(@NotNull UCallableReferenceExpression methodRef) {
|
||||
UExpression qualifierExpression = methodRef.getQualifierExpression();
|
||||
|
||||
Reference in New Issue
Block a user