diff options
Diffstat (limited to 'nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericsTests.java')
-rw-r--r-- | nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericsTests.java | 66 |
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( |