mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-07 22:09:38 +07:00
[java-analysis] IDEA-375487 Nullability doesn't work for captured wildcard type
(cherry picked from commit ff31ea679c0497709d0141a3ecfbf988600872e3) IJ-CR-168211 GitOrigin-RevId: c8c22fcb6a61fe816280f0dbe434f75199b3d850
This commit is contained in:
committed by
intellij-monorepo-bot
parent
46136163d4
commit
eabc1a5902
@@ -14,6 +14,7 @@ public final class PsiCapturedWildcardType extends PsiType.Stub {
|
||||
private final @NotNull PsiWildcardType myExistential;
|
||||
private final @NotNull PsiElement myContext;
|
||||
private final @Nullable PsiTypeParameter myParameter;
|
||||
private @Nullable TypeNullability myNullability;
|
||||
|
||||
private PsiType myUpperBound;
|
||||
|
||||
@@ -24,17 +25,19 @@ public final class PsiCapturedWildcardType extends PsiType.Stub {
|
||||
public static @NotNull PsiCapturedWildcardType create(@NotNull PsiWildcardType existential,
|
||||
@NotNull PsiElement context,
|
||||
@Nullable PsiTypeParameter parameter) {
|
||||
return new PsiCapturedWildcardType(existential, context, parameter);
|
||||
return new PsiCapturedWildcardType(existential, context, parameter, null);
|
||||
}
|
||||
|
||||
private PsiCapturedWildcardType(@NotNull PsiWildcardType existential,
|
||||
@NotNull PsiElement context,
|
||||
@Nullable PsiTypeParameter parameter) {
|
||||
@Nullable PsiTypeParameter parameter,
|
||||
@Nullable TypeNullability nullability) {
|
||||
super(TypeAnnotationProvider.EMPTY);
|
||||
myExistential = existential;
|
||||
myContext = context;
|
||||
myParameter = parameter;
|
||||
myUpperBound = getJavaLangObject(myContext.getManager(), getResolveScope());
|
||||
myNullability = nullability;
|
||||
}
|
||||
|
||||
private static final RecursionGuard<Object> guard = RecursionManager.createGuard("captureGuard");
|
||||
@@ -88,13 +91,17 @@ public final class PsiCapturedWildcardType extends PsiType.Stub {
|
||||
|
||||
@Override
|
||||
public @NotNull TypeNullability getNullability() {
|
||||
return myExistential.getNullability();
|
||||
if (myNullability == null) {
|
||||
myNullability = myExistential.getNullability();
|
||||
}
|
||||
return myNullability;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull PsiType withNullability(@NotNull TypeNullability nullability) {
|
||||
PsiWildcardType newExistential = myExistential.withNullability(nullability);
|
||||
return newExistential.equals(myExistential) ? this : new PsiCapturedWildcardType(newExistential, myContext, myParameter);
|
||||
PsiCapturedWildcardType type = new PsiCapturedWildcardType(myExistential, myContext, myParameter, nullability);
|
||||
type.setUpperBound(myUpperBound);
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user