[java-analysis] Parameter nullability: prefer nullability known from type over nullability known from parameter declaration

Type nullability could be more precise if parameter is generic
Fixes IDEA-364343 False-positive NPE at unboxing inside lambda with JSpecify annotations


(cherry picked from commit 9a49f5687eccaa013e639cdf15950be911e100bc)

IJ-CR-151033

GitOrigin-RevId: be6c25b7e63a9d231077351fd0bf813515e7f9bf
This commit is contained in:
Tagir Valeev
2024-12-06 09:55:28 +01:00
committed by intellij-monorepo-bot
parent fca9777595
commit 3eea2c8961
3 changed files with 32 additions and 5 deletions

View File

@@ -284,12 +284,12 @@ public final class DfaPsiUtil {
if (sam != null) {
PsiParameter parameter = sam.getParameterList().getParameter(index);
if (parameter != null) {
Nullability nullability = getElementNullability(null, parameter);
if (nullability != Nullability.UNKNOWN) {
return nullability;
}
PsiType parameterType = type.resolveGenerics().getSubstitutor().substitute(parameter.getType());
return getTypeNullability(GenericsUtil.eliminateWildcards(parameterType, false, true));
NullabilityAnnotationInfo info = getTypeNullabilityInfo(GenericsUtil.eliminateWildcards(parameterType, false, true));
if (info != null) {
return info.getNullability();
}
return getElementNullability(null, parameter);
}
}
return Nullability.UNKNOWN;