mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
[java-inspections] checkNullableNotNullInstantiationConflict: use createTypeFromText to preserve nullity
Part of IDEA-372347 Java type inference should respect nullability GitOrigin-RevId: 433069762b1c7a5dff4b64f9708154a812137cd4
This commit is contained in:
committed by
intellij-monorepo-bot
parent
77f4733098
commit
96974e33ba
@@ -369,20 +369,21 @@ public class NullableStuffInspectionBase extends AbstractBaseJavaLocalInspection
|
||||
PsiTypeElement typeArgument = typeArguments[i];
|
||||
Project project = element.getProject();
|
||||
PsiType type = typeArgument.getType();
|
||||
if (DfaPsiUtil.getTypeNullability(JavaPsiFacade.getElementFactory(project).createType(typeParameters[i])) ==
|
||||
Nullability.NOT_NULL) {
|
||||
Nullability typeNullability = DfaPsiUtil.getTypeNullability(type);
|
||||
if (typeNullability != Nullability.NOT_NULL &&
|
||||
!(typeNullability == Nullability.UNKNOWN && type instanceof PsiWildcardType && !((PsiWildcardType)type).isExtends())) {
|
||||
String annotationToAdd = manager.getDefaultNotNull();
|
||||
PsiClass annotationClass = JavaPsiFacade.getInstance(project).findClass(annotationToAdd, element.getResolveScope());
|
||||
AddTypeAnnotationFix fix = null;
|
||||
if (annotationClass != null &&
|
||||
AnnotationTargetUtil.findAnnotationTarget(annotationClass, PsiAnnotation.TargetType.TYPE_USE) != null) {
|
||||
fix = new AddTypeAnnotationFix(typeArgument, annotationToAdd, manager.getNullables());
|
||||
}
|
||||
reportProblem(holder, typeArgument, fix, "non.null.type.argument.is.expected");
|
||||
String parameterName = typeParameters[i].getName();
|
||||
if (parameterName == null) continue;
|
||||
PsiType parameterType = JavaPsiFacade.getElementFactory(project).createTypeFromText(parameterName, typeParameters[i]);
|
||||
if (DfaPsiUtil.getTypeNullability(parameterType) != Nullability.NOT_NULL) continue;
|
||||
Nullability typeNullability = DfaPsiUtil.getTypeNullability(type);
|
||||
if (typeNullability != Nullability.NOT_NULL &&
|
||||
!(typeNullability == Nullability.UNKNOWN && type instanceof PsiWildcardType wildcardType && !wildcardType.isExtends())) {
|
||||
String annotationToAdd = manager.getDefaultNotNull();
|
||||
PsiClass annotationClass = JavaPsiFacade.getInstance(project).findClass(annotationToAdd, element.getResolveScope());
|
||||
AddTypeAnnotationFix fix = null;
|
||||
if (annotationClass != null &&
|
||||
AnnotationTargetUtil.findAnnotationTarget(annotationClass, PsiAnnotation.TargetType.TYPE_USE) != null) {
|
||||
fix = new AddTypeAnnotationFix(typeArgument, annotationToAdd, manager.getNullables());
|
||||
}
|
||||
reportProblem(holder, typeArgument, fix, "non.null.type.argument.is.expected");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user