From 758116d5319880353e05a57e97a3911ceea97e47 Mon Sep 17 00:00:00 2001 From: cpovirk Date: Fri, 3 Apr 2026 15:23:18 -0700 Subject: [PATCH] Add a few missing `@Nullable` annotations. These are detected by http://errorprone.info/bugpattern/NullArgumentForNonNullParameter, as I noticed when enabling it (as we'd hopefully be able to do more easily [with Bazel](https://github.com/google/guava/issues/2850) and perhaps with the check improved to recognize tests that are looking precisely for a `NullPointerException`). RELNOTES=n/a PiperOrigin-RevId: 894275775 --- .../com/google/common/collect/testing/Helpers.java | 8 ++++---- .../google/common/escape/testing/EscaperAsserts.java | 12 +++--------- .../com/google/common/collect/testing/Helpers.java | 8 ++++---- .../google/common/escape/testing/EscaperAsserts.java | 12 +++--------- 4 files changed, 14 insertions(+), 26 deletions(-) diff --git a/android/guava-testlib/src/com/google/common/collect/testing/Helpers.java b/android/guava-testlib/src/com/google/common/collect/testing/Helpers.java index 24cb640427af..bfc1ae1eccac 100644 --- a/android/guava-testlib/src/com/google/common/collect/testing/Helpers.java +++ b/android/guava-testlib/src/com/google/common/collect/testing/Helpers.java @@ -127,7 +127,7 @@ public static void assertEqualInOrder(Iterable expected, Iterable actual) } } - public static void assertContentsInOrder(Iterable actual, Object... expected) { + public static void assertContentsInOrder(Iterable actual, @Nullable Object... expected) { assertEqualInOrder(asList(expected), actual); } @@ -155,11 +155,11 @@ public static void assertEqualIgnoringOrder(Iterable expected, Iterable ac assertTrue("unexpected elements: " + act, act.isEmpty()); } - public static void assertContentsAnyOrder(Iterable actual, Object... expected) { + public static void assertContentsAnyOrder(Iterable actual, @Nullable Object... expected) { assertEqualIgnoringOrder(asList(expected), actual); } - public static void assertContains(Iterable actual, Object expected) { + public static void assertContains(Iterable actual, @Nullable Object expected) { boolean contained = false; if (actual instanceof Collection) { contained = ((Collection) actual).contains(expected); @@ -177,7 +177,7 @@ public static void assertContains(Iterable actual, Object expected) { } } - public static void assertContainsAllOf(Iterable actual, Object... expected) { + public static void assertContainsAllOf(Iterable actual, @Nullable Object... expected) { List expectedList = new ArrayList<>(asList(expected)); for (Object o : actual) { diff --git a/android/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java b/android/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java index 31ac2015dd04..8f9ba92bc3f7 100644 --- a/android/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java +++ b/android/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java @@ -17,6 +17,7 @@ package com.google.common.escape.testing; import static com.google.common.escape.Escapers.computeReplacement; +import static org.junit.Assert.assertThrows; import com.google.common.annotations.GwtCompatible; import com.google.common.escape.CharEscaper; @@ -40,16 +41,12 @@ private EscaperAsserts() {} * * @param escaper the non-null escaper to test */ + @SuppressWarnings("NullArgumentForNonNullParameter") // test of a bogus call public static void assertBasic(Escaper escaper) throws IOException { // Escapers operate on characters: no characters, no escaping. Assert.assertEquals("", escaper.escape("")); // Assert that escapers throw null pointer exceptions. - try { - escaper.escape((String) null); - Assert.fail("exception not thrown when escaping a null string"); - } catch (NullPointerException e) { - // pass - } + assertThrows(NullPointerException.class, () -> escaper.escape(null)); } /** @@ -60,7 +57,6 @@ public static void assertBasic(Escaper escaper) throws IOException { * @param c the character to escape */ public static void assertEscaping(CharEscaper escaper, String expected, char c) { - String escaped = computeReplacement(escaper, c); Assert.assertNotNull(escaped); Assert.assertEquals(expected, escaped); @@ -74,7 +70,6 @@ public static void assertEscaping(CharEscaper escaper, String expected, char c) * @param cp the Unicode code point to escape */ public static void assertEscaping(UnicodeEscaper escaper, String expected, int cp) { - String escaped = computeReplacement(escaper, cp); Assert.assertNotNull(escaped); Assert.assertEquals(expected, escaped); @@ -110,7 +105,6 @@ public static void assertUnescaped(UnicodeEscaper escaper, int cp) { */ public static void assertUnicodeEscaping( UnicodeEscaper escaper, String expected, char hi, char lo) { - int cp = Character.toCodePoint(hi, lo); String escaped = computeReplacement(escaper, cp); Assert.assertNotNull(escaped); diff --git a/guava-testlib/src/com/google/common/collect/testing/Helpers.java b/guava-testlib/src/com/google/common/collect/testing/Helpers.java index 24cb640427af..bfc1ae1eccac 100644 --- a/guava-testlib/src/com/google/common/collect/testing/Helpers.java +++ b/guava-testlib/src/com/google/common/collect/testing/Helpers.java @@ -127,7 +127,7 @@ public static void assertEqualInOrder(Iterable expected, Iterable actual) } } - public static void assertContentsInOrder(Iterable actual, Object... expected) { + public static void assertContentsInOrder(Iterable actual, @Nullable Object... expected) { assertEqualInOrder(asList(expected), actual); } @@ -155,11 +155,11 @@ public static void assertEqualIgnoringOrder(Iterable expected, Iterable ac assertTrue("unexpected elements: " + act, act.isEmpty()); } - public static void assertContentsAnyOrder(Iterable actual, Object... expected) { + public static void assertContentsAnyOrder(Iterable actual, @Nullable Object... expected) { assertEqualIgnoringOrder(asList(expected), actual); } - public static void assertContains(Iterable actual, Object expected) { + public static void assertContains(Iterable actual, @Nullable Object expected) { boolean contained = false; if (actual instanceof Collection) { contained = ((Collection) actual).contains(expected); @@ -177,7 +177,7 @@ public static void assertContains(Iterable actual, Object expected) { } } - public static void assertContainsAllOf(Iterable actual, Object... expected) { + public static void assertContainsAllOf(Iterable actual, @Nullable Object... expected) { List expectedList = new ArrayList<>(asList(expected)); for (Object o : actual) { diff --git a/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java b/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java index 31ac2015dd04..8f9ba92bc3f7 100644 --- a/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java +++ b/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java @@ -17,6 +17,7 @@ package com.google.common.escape.testing; import static com.google.common.escape.Escapers.computeReplacement; +import static org.junit.Assert.assertThrows; import com.google.common.annotations.GwtCompatible; import com.google.common.escape.CharEscaper; @@ -40,16 +41,12 @@ private EscaperAsserts() {} * * @param escaper the non-null escaper to test */ + @SuppressWarnings("NullArgumentForNonNullParameter") // test of a bogus call public static void assertBasic(Escaper escaper) throws IOException { // Escapers operate on characters: no characters, no escaping. Assert.assertEquals("", escaper.escape("")); // Assert that escapers throw null pointer exceptions. - try { - escaper.escape((String) null); - Assert.fail("exception not thrown when escaping a null string"); - } catch (NullPointerException e) { - // pass - } + assertThrows(NullPointerException.class, () -> escaper.escape(null)); } /** @@ -60,7 +57,6 @@ public static void assertBasic(Escaper escaper) throws IOException { * @param c the character to escape */ public static void assertEscaping(CharEscaper escaper, String expected, char c) { - String escaped = computeReplacement(escaper, c); Assert.assertNotNull(escaped); Assert.assertEquals(expected, escaped); @@ -74,7 +70,6 @@ public static void assertEscaping(CharEscaper escaper, String expected, char c) * @param cp the Unicode code point to escape */ public static void assertEscaping(UnicodeEscaper escaper, String expected, int cp) { - String escaped = computeReplacement(escaper, cp); Assert.assertNotNull(escaped); Assert.assertEquals(expected, escaped); @@ -110,7 +105,6 @@ public static void assertUnescaped(UnicodeEscaper escaper, int cp) { */ public static void assertUnicodeEscaping( UnicodeEscaper escaper, String expected, char hi, char lo) { - int cp = Character.toCodePoint(hi, lo); String escaped = computeReplacement(escaper, cp); Assert.assertNotNull(escaped);