[jspecify] IDEA-377689 Nullable incompatibilities. Calls with union generics

Fix testdata to avoid testing several mismatches in a single flow
See also https://github.com/jspecify/jspecify/pull/763/

GitOrigin-RevId: 719c2f289c5e971bc4e4879e06cf3f7fc2de1842
This commit is contained in:
Tagir Valeev
2025-09-18 15:04:14 +00:00
committed by intellij-monorepo-bot
parent f34bbe78ef
commit 4f1f7eaf8a
2 changed files with 81 additions and 53 deletions
@@ -37,57 +37,90 @@ interface IntersectionSupertype {
<T extends @Nullable Object & @Nullable Lib> void x8(T t);
default void useLib(Lib lib) {
x0(lib);
x1(lib);
x2(lib);
x3(lib);
x4(lib);
x5(lib);
x6(lib);
x7(lib);
x8(lib);
default void useLib(Lib lib, int i) {
switch (i) {
case 0:
x0(lib);
case 1:
x1(lib);
case 2:
x2(lib);
case 3:
x3(lib);
case 4:
x4(lib);
case 5:
x5(lib);
case 6:
x6(lib);
case 7:
x7(lib);
case 8:
x8(lib);
}
}
default void useLibUnspec(@NullnessUnspecified Lib lib) {
// jspecify_nullness_not_enough_information
x0(lib);
// jspecify_nullness_not_enough_information
x1(lib);
// jspecify_nullness_not_enough_information
x2(lib);
// jspecify_nullness_not_enough_information
x3(lib);
// jspecify_nullness_not_enough_information
x4(lib);
// jspecify_nullness_not_enough_information
x5(lib);
// jspecify_nullness_not_enough_information
x6(lib);
// jspecify_nullness_not_enough_information
x7(lib);
this.<@Nullable Lib>x8(lib);
default void useLibUnspec(@NullnessUnspecified Lib lib, int i) {
switch (i) {
case 0:
// jspecify_nullness_not_enough_information
x0(lib);
case 1:
// jspecify_nullness_not_enough_information
x1(lib);
case 2:
// jspecify_nullness_not_enough_information
x2(lib);
case 3:
// jspecify_nullness_not_enough_information
x3(lib);
case 4:
// jspecify_nullness_not_enough_information
x4(lib);
case 5:
// jspecify_nullness_not_enough_information
x5(lib);
case 6:
// jspecify_nullness_not_enough_information
x6(lib);
case 7:
// jspecify_nullness_not_enough_information
x7(lib);
case 8:
this.<@Nullable Lib>x8(lib);
}
}
default void useLibUnionNull(@Nullable Lib lib) {
// jspecify_nullness_mismatch
x0(lib);
// jspecify_nullness_mismatch
x1(lib);
// jspecify_nullness_mismatch
x2(lib);
// jspecify_nullness_mismatch
x3(lib);
// jspecify_nullness_not_enough_information
x4(lib);
// jspecify_nullness_not_enough_information
x5(lib);
// jspecify_nullness_mismatch
x6(lib);
// jspecify_nullness_not_enough_information
x7(lib);
x8(lib);
default void useLibUnionNull(@Nullable Lib lib, int i) {
switch (i) {
case 0:
// jspecify_nullness_mismatch
x0(lib);
case 1:
// jspecify_nullness_mismatch
x1(lib);
case 2:
// jspecify_nullness_mismatch
x2(lib);
case 3:
// jspecify_nullness_mismatch
x3(lib);
case 4:
// jspecify_nullness_not_enough_information
x4(lib);
case 5:
// jspecify_nullness_not_enough_information
x5(lib);
case 6:
// jspecify_nullness_mismatch
x6(lib);
case 7:
// jspecify_nullness_not_enough_information
x7(lib);
case 8:
x8(lib);
}
}
interface Lib {}
}
}
@@ -38,9 +38,6 @@ public class JSpecifyFilteredAnnotationTest extends JSpecifyAnnotationTest {
new Pair<>("DereferenceTypeVariable.java", 117), // see: IDEA-377688
new Pair<>("TypeVariableToObject.java", 104), // see: IDEA-377688
new Pair<>("IntersectionSupertype.java", 76), // see: IDEA-377689
new Pair<>("IntersectionSupertype.java", 84), // see: IDEA-377689
new Pair<>("NullLiteralToTypeVariable.java", 58), // see: IDEA-377691
new Pair<>("NullLiteralToTypeVariable.java", 78), // see: IDEA-377691
new Pair<>("NullLiteralToTypeVariable.java", 98), // see: IDEA-377691
@@ -81,7 +78,7 @@ public class JSpecifyFilteredAnnotationTest extends JSpecifyAnnotationTest {
)
),
new SkipIndividuallyFilter( //cases to investigate. (line number starts from 0)
Set.<Pair<String, Integer>>of(
Set.of(
new Pair<>("AnnotatedBoundsOfWildcard.java", 74), // @unspecified, skip
new Pair<>("AnnotatedBoundsOfWildcard.java", 76), // @unspecified, skip
new Pair<>("ComplexParametric.java", 158), // @unspecified, skip
@@ -90,8 +87,6 @@ public class JSpecifyFilteredAnnotationTest extends JSpecifyAnnotationTest {
new Pair<>("ComplexParametric.java", 238), // @unspecified, skip
new Pair<>("ComplexParametric.java", 246), // @unspecified, skip
new Pair<>("DereferenceTypeVariable.java", 123), // @unspecified, skip
new Pair<>("IntersectionSupertype.java", 74), // @unspecified, skip
new Pair<>("IntersectionSupertype.java", 78), // @unspecified, skip
new Pair<>("MultiBoundTypeVariableToObject.java", 43), // @unspecified, skip
new Pair<>("MultiBoundTypeVariableToObject.java", 52), // @unspecified, skip
new Pair<>("MultiBoundTypeVariableToOther.java", 43), // @unspecified, skip