aboutsummaryrefslogtreecommitdiff
path: root/nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericsTests.java
diff options
context:
space:
mode:
Diffstat (limited to 'nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericsTests.java')
-rw-r--r--nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericsTests.java66
1 files changed, 66 insertions, 0 deletions
diff --git a/nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericsTests.java b/nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericsTests.java
index e722706..68f1d11 100644
--- a/nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericsTests.java
+++ b/nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericsTests.java
@@ -292,6 +292,26 @@ public class NullAwayJSpecifyGenericsTests extends NullAwayTestsBase {
}
@Test
+ public void genericsChecksForAssignmentsWithNonJSpecifyAnnotations() {
+ makeHelper()
+ .addSourceLines(
+ "Test.java",
+ "package com.uber;",
+ "import org.checkerframework.checker.nullness.qual.Nullable;",
+ "class Test {",
+ " static class NullableTypeParam<E extends @Nullable Object> {}",
+ " static void testNoWarningForMismatch(NullableTypeParam<@Nullable String> t1) {",
+ " // no error here since we only do our checks for JSpecify @Nullable annotations",
+ " NullableTypeParam<String> t2 = t1;",
+ " }",
+ " static void testNegative(NullableTypeParam<@Nullable String> t1) {",
+ " NullableTypeParam<@Nullable String> t2 = t1;",
+ " }",
+ "}")
+ .doTest();
+ }
+
+ @Test
public void nestedChecksForAssignmentsMultipleArguments() {
makeHelper()
.addSourceLines(
@@ -1494,6 +1514,52 @@ public class NullAwayJSpecifyGenericsTests extends NullAwayTestsBase {
.doTest();
}
+ @Test
+ public void testForStaticMethodCallAsAParam() {
+ makeHelper()
+ .addSourceLines(
+ "Test.java",
+ "package com.uber;",
+ "import org.jspecify.annotations.Nullable;",
+ "class Test {",
+ " static class A<T> {",
+ " public static <T> A<T> returnA(){",
+ " return new A<T>();",
+ " }",
+ " public static <T> A<T> returnAWithParam(Object o){",
+ " return new A<T>();",
+ " }",
+ " }",
+ " static void func(A<Object> a){",
+ " }",
+ " static void testNegative() {",
+ " func(A.returnA());",
+ " }",
+ " static void testNegative2() {",
+ " func(A.returnAWithParam(new Object()));",
+ " }",
+ "}")
+ .doTest();
+ }
+
+ @Test
+ public void testForDiamondOperatorReturnedAsAMethodCaller() {
+ makeHelper()
+ .addSourceLines(
+ "Test.java",
+ "package com.uber;",
+ "import org.jspecify.annotations.Nullable;",
+ "class Test {",
+ " static class B<T>{",
+ " String build(){return \"x\";}",
+ " }",
+ " static String testNegative() {",
+ " return new B<>().build();",
+ " }",
+ "}")
+ .doTest();
+ }
+
private CompilationTestHelper makeHelper() {
return makeTestHelperWithArgs(
Arrays.asList(