refactor [java]: Extract PsiImplUtil.isTypeQualifierOfStaticMember() out of AnnotationChecker

GitOrigin-RevId: ec17169848b689d83b72039626b44aa5e8e311a2
This commit is contained in:
Marcin Mikosik
2026-02-12 20:01:14 +00:00
committed by intellij-monorepo-bot
parent 4d44085484
commit 100f749763
2 changed files with 26 additions and 14 deletions
@@ -33,7 +33,6 @@ import com.intellij.psi.PsiErrorElement;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiIdentifier;
import com.intellij.psi.PsiJavaCodeReferenceElement;
import com.intellij.psi.PsiMember;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiModifier;
import com.intellij.psi.PsiModifierList;
@@ -109,19 +108,8 @@ final class AnnotationChecker {
return;
}
PsiElement parent = ref.getParent();
while (parent instanceof PsiJavaCodeReferenceElement referenceElement) {
PsiElement qualified = referenceElement.resolve();
if (qualified instanceof PsiMember member && member.hasModifierProperty(PsiModifier.STATIC)) {
myVisitor.report(JavaErrorKinds.ANNOTATION_NOT_ALLOWED_STATIC.create(annotation));
return;
}
if (qualified instanceof PsiClass) {
parent = parent.getParent();
}
else {
break;
}
if (PsiImplUtil.isTypeQualifierOfStaticMember(ref)) {
myVisitor.report(JavaErrorKinds.ANNOTATION_NOT_ALLOWED_STATIC.create(annotation));
}
}
@@ -1021,4 +1021,28 @@ public final class PsiImplUtil {
}
return element;
}
/**
* @return true if ref is a type qualifier of a static member
*/
@ApiStatus.Internal
public static boolean isTypeQualifierOfStaticMember(@NotNull PsiJavaCodeReferenceElement ref) {
PsiElement parent = ref.getParent();
while (parent instanceof PsiJavaCodeReferenceElement) {
PsiJavaCodeReferenceElement referenceElement = (PsiJavaCodeReferenceElement)parent;
PsiElement qualified = referenceElement.resolve();
if (qualified instanceof PsiMember) {
if (((PsiMember)qualified).hasModifierProperty(PsiModifier.STATIC)) {
return true;
}
}
if (qualified instanceof PsiClass) {
parent = parent.getParent();
}
else {
break;
}
}
return false;
}
}