Global inspections: track if class is enum to simplify code a bit

(will also be used in the future for better "Unused declaration" inspection messages)

GitOrigin-RevId: a24d1d2e01fc7e0644ad06c506bac9d89e39fab3
This commit is contained in:
Bas Leijdekkers
2022-05-20 14:09:40 +02:00
committed by intellij-monorepo-bot
parent cb390d5287
commit 310e3b8f2e
4 changed files with 44 additions and 21 deletions

View File

@@ -100,14 +100,7 @@ public class RefJavaUtilImpl extends RefJavaUtil {
@Override
public boolean visitSimpleNameReferenceExpression(@NotNull USimpleNameReferenceExpression node) {
final PsiElement target = node.resolve();
visitReferenceExpression(node);
if (target instanceof PsiClass) {
final PsiClass aClass = (PsiClass)target;
final RefElement refElement = refManager.getReference(aClass);
refFrom.addReference(refElement, aClass, decl, false, true, null);
}
return false;
}
@@ -272,7 +265,7 @@ public class RefJavaUtilImpl extends RefJavaUtil {
@Override
public boolean visitCallableReferenceExpression(@NotNull UCallableReferenceExpression methodRef) {
RefElement refMethod = refFrom.getRefManager().getReference(methodRef.getSourcePsi());
RefElement refMethod = refManager.getReference(methodRef.getSourcePsi());
if (refFrom == refMethod) {
visitReferenceExpression(methodRef);
return false;
@@ -294,7 +287,7 @@ public class RefJavaUtilImpl extends RefJavaUtil {
refFrom.addReference(refWhat, aClass, decl, false, true, null);
}
PsiElement functionalExpr = expression.getSourcePsi();
RefElement refFunctionalExpr = refFrom.getRefManager().getReference(functionalExpr);
RefElement refFunctionalExpr = refManager.getReference(functionalExpr);
if (refFunctionalExpr != null) refFunctionalExpr.waitForInitialized();
refFrom.addReference(refFunctionalExpr, functionalExpr, decl, false, true, expression);
}
@@ -379,15 +372,11 @@ public class RefJavaUtilImpl extends RefJavaUtil {
hasConstructorsMarked = true;
}
UClass uClass = refClass.getUastElement();
if (uClass != null && uClass.getJavaPsi().isEnum()) {
for (RefEntity child : refClass.getChildren()) {
if (child instanceof RefFieldImpl) {
UField uField = ((RefField)child).getUastElement();
if (uField instanceof UEnumConstant) {
((RefFieldImpl)child).markReferenced(refFrom, false, true, node);
refFrom.addOutReference((RefElement)child);
}
if (refClass.isEnum()) {
for (RefField field : refClass.getFields()) {
if (field.isEnumConstant()) {
((RefFieldImpl)field).markReferenced(refFrom, false, true, node);
refFrom.addOutReference(field);
}
}
}