From 8caf50ca22e571c580b630351d448fc9f2256b2a Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Thu, 22 Feb 2024 17:47:59 -0800 Subject: [PATCH] Test case for generic methods --- .../NullAwayJSpecifyGenericMethodTests.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericMethodTests.java diff --git a/nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericMethodTests.java b/nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericMethodTests.java new file mode 100644 index 0000000000..e46172fa94 --- /dev/null +++ b/nullaway/src/test/java/com/uber/nullaway/NullAwayJSpecifyGenericMethodTests.java @@ -0,0 +1,44 @@ +package com.uber.nullaway; + +import com.google.errorprone.CompilationTestHelper; +import java.util.Arrays; +import org.junit.Ignore; +import org.junit.Test; + +public class NullAwayJSpecifyGenericMethodTests extends NullAwayTestsBase { + + @Test + @Ignore("requires generic method support") + public void genericMethodAndVoidType() { + makeHelper() + .addSourceLines( + "Test.java", + "package com.uber;", + "import org.jspecify.annotations.Nullable;", + "class Test {", + " static class Foo {", + " void foo(C c, Visitor visitor) {", + " visitor.visit(this, c);", + " }", + " }", + " static abstract class Visitor {", + " abstract void visit(Foo foo, C c);", + " }", + " static class MyVisitor extends Visitor<@Nullable Void> {", + " @Override", + " void visit(Foo foo, @Nullable Void c) {}", + " }", + " static void test(Foo f) {", + " // this is safe", + " f.foo(null, new MyVisitor());", + " }", + "}") + .doTest(); + } + + private CompilationTestHelper makeHelper() { + return makeTestHelperWithArgs( + Arrays.asList( + "-XepOpt:NullAway:AnnotatedPackages=com.uber", "-XepOpt:NullAway:JSpecifyMode=true")); + } +}