mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: Inspection that checks if a field or method accessed via reflection does exist and is visible - review follow up (IDEA-168837, IDEA-CR-20535)
This commit is contained in:
+3
-16
@@ -144,11 +144,9 @@ public class JavaReflectionReferenceUtil {
|
||||
if (!isJavaLangClass(resolvedElement)) return null;
|
||||
final PsiTypeParameter[] parameters = resolvedElement.getTypeParameters();
|
||||
if (parameters.length == 1) {
|
||||
PsiType typeArgument = resolveResult.getSubstitutor().substitute(parameters[0]);
|
||||
if (typeArgument instanceof PsiCapturedWildcardType) {
|
||||
typeArgument = ((PsiCapturedWildcardType)typeArgument).getUpperBound();
|
||||
}
|
||||
final PsiClass argumentClass = unwrapTypeParameter(PsiTypesUtil.getPsiClass(typeArgument));
|
||||
final PsiType typeArgument = resolveResult.getSubstitutor().substitute(parameters[0]);
|
||||
final PsiType erasure = TypeConversionUtil.erasure(typeArgument);
|
||||
final PsiClass argumentClass = PsiTypesUtil.getPsiClass(erasure);
|
||||
if (argumentClass != null && !isJavaLangObject(argumentClass)) {
|
||||
return ReflectiveType.create(argumentClass);
|
||||
}
|
||||
@@ -200,17 +198,6 @@ public class JavaReflectionReferenceUtil {
|
||||
return ReflectiveType.create(expression.getType(), expression);
|
||||
}
|
||||
|
||||
@Contract("null -> null")
|
||||
@Nullable
|
||||
private static PsiClass unwrapTypeParameter(@Nullable PsiClass psiClass) {
|
||||
int preventEndlessLoop = 5;
|
||||
while (psiClass instanceof PsiTypeParameter && --preventEndlessLoop > 0) {
|
||||
final PsiClassType[] extendsList = psiClass.getExtendsListTypes();
|
||||
psiClass = extendsList.length != 0 ? extendsList[0].resolve() : null;
|
||||
}
|
||||
return psiClass;
|
||||
}
|
||||
|
||||
@Contract("null,_->null")
|
||||
@Nullable
|
||||
public static <T> T computeConstantExpression(@Nullable PsiExpression expression, @NotNull Class<T> expectedType) {
|
||||
|
||||
Reference in New Issue
Block a user