From 68e7ba4b9b40083954d04678233e19fb51649818 Mon Sep 17 00:00:00 2001 From: Suzanne Millstein Date: Thu, 7 Dec 2023 12:34:21 -0800 Subject: [PATCH 1/2] Add AssertMethod annotations --- guava/pom.xml | 2 +- .../com/google/common/base/Preconditions.java | 76 +++++++++++++++++++ guava/src/com/google/common/base/Verify.java | 50 ++++++++++++ pom.xml | 2 +- 4 files changed, 128 insertions(+), 2 deletions(-) diff --git a/guava/pom.xml b/guava/pom.xml index c017817f67ae..3d3f95c9aa8f 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -91,7 +91,7 @@ org.checkerframework checker - 3.35.0 + 3.41.0 diff --git a/guava/src/com/google/common/base/Preconditions.java b/guava/src/com/google/common/base/Preconditions.java index 9f9e6e176ca4..9205fcbee305 100644 --- a/guava/src/com/google/common/base/Preconditions.java +++ b/guava/src/com/google/common/base/Preconditions.java @@ -23,6 +23,7 @@ import org.checkerframework.checker.index.qual.NonNegative; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; +import org.checkerframework.dataflow.qual.AssertMethod; import org.checkerframework.dataflow.qual.Pure; import org.checkerframework.framework.qual.AnnotatedFor; @@ -132,6 +133,7 @@ private Preconditions() {} * @param expression a boolean expression * @throws IllegalArgumentException if {@code expression} is false */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean expression) { if (!expression) { @@ -147,6 +149,7 @@ public static void checkArgument(boolean expression) { * string using {@link String#valueOf(Object)} * @throws IllegalArgumentException if {@code expression} is false */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean expression, @CheckForNull Object errorMessage) { if (!expression) { @@ -167,6 +170,7 @@ public static void checkArgument(boolean expression, @CheckForNull Object errorM * are converted to strings using {@link String#valueOf(Object)}. * @throws IllegalArgumentException if {@code expression} is false */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean expression, @@ -184,6 +188,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, char p1) { if (!b) { @@ -198,6 +203,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, char p1 * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, int p1) { if (!b) { @@ -212,6 +218,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, int p1) * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, long p1) { if (!b) { @@ -226,6 +233,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, long p1 * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, String errorMessageTemplate, @CheckForNull Object p1) { @@ -241,6 +249,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, char p1, char p2) { if (!b) { @@ -255,6 +264,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, char p1 * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, char p1, int p2) { if (!b) { @@ -269,6 +279,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, char p1 * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, char p1, long p2) { if (!b) { @@ -283,6 +294,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, char p1 * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, String errorMessageTemplate, char p1, @CheckForNull Object p2) { @@ -298,6 +310,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, int p1, char p2) { if (!b) { @@ -312,6 +325,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, int p1, * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, int p1, int p2) { if (!b) { @@ -326,6 +340,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, int p1, * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, int p1, long p2) { if (!b) { @@ -340,6 +355,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, int p1, * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, String errorMessageTemplate, int p1, @CheckForNull Object p2) { @@ -355,6 +371,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, long p1, char p2) { if (!b) { @@ -369,6 +386,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, long p1 * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, long p1, int p2) { if (!b) { @@ -383,6 +401,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, long p1 * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument(boolean b, String errorMessageTemplate, long p1, long p2) { if (!b) { @@ -397,6 +416,7 @@ public static void checkArgument(boolean b, String errorMessageTemplate, long p1 * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, String errorMessageTemplate, long p1, @CheckForNull Object p2) { @@ -412,6 +432,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, String errorMessageTemplate, @CheckForNull Object p1, char p2) { @@ -427,6 +448,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, String errorMessageTemplate, @CheckForNull Object p1, int p2) { @@ -442,6 +464,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, String errorMessageTemplate, @CheckForNull Object p1, long p2) { @@ -457,6 +480,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, String errorMessageTemplate, @CheckForNull Object p1, @CheckForNull Object p2) { @@ -472,6 +496,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, @@ -491,6 +516,7 @@ public static void checkArgument( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalArgumentException.class) @Pure public static void checkArgument( boolean b, @@ -512,6 +538,8 @@ public static void checkArgument( * @throws IllegalStateException if {@code expression} is false * @see Verify#verify Verify.verify() */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean expression) { if (!expression) { throw new IllegalStateException(); @@ -528,6 +556,8 @@ public static void checkState(boolean expression) { * @throws IllegalStateException if {@code expression} is false * @see Verify#verify Verify.verify() */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean expression, @CheckForNull Object errorMessage) { if (!expression) { throw new IllegalStateException(String.valueOf(errorMessage)); @@ -549,6 +579,8 @@ public static void checkState(boolean expression, @CheckForNull Object errorMess * @throws IllegalStateException if {@code expression} is false * @see Verify#verify Verify.verify() */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean expression, /* @@ -574,6 +606,8 @@ public static void checkState( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, char p1) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1)); @@ -588,6 +622,8 @@ public static void checkState(boolean b, String errorMessageTemplate, char p1) { * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, int p1) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1)); @@ -602,6 +638,8 @@ public static void checkState(boolean b, String errorMessageTemplate, int p1) { * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, long p1) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1)); @@ -616,6 +654,8 @@ public static void checkState(boolean b, String errorMessageTemplate, long p1) { * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, @CheckForNull Object p1) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1)); @@ -630,6 +670,8 @@ public static void checkState(boolean b, String errorMessageTemplate, @CheckForN * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, char p1, char p2) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1, p2)); @@ -644,6 +686,8 @@ public static void checkState(boolean b, String errorMessageTemplate, char p1, c * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, char p1, int p2) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1, p2)); @@ -658,6 +702,8 @@ public static void checkState(boolean b, String errorMessageTemplate, char p1, i * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, char p1, long p2) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1, p2)); @@ -672,6 +718,8 @@ public static void checkState(boolean b, String errorMessageTemplate, char p1, l * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean b, String errorMessageTemplate, char p1, @CheckForNull Object p2) { if (!b) { @@ -687,6 +735,8 @@ public static void checkState( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, int p1, char p2) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1, p2)); @@ -701,6 +751,8 @@ public static void checkState(boolean b, String errorMessageTemplate, int p1, ch * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, int p1, int p2) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1, p2)); @@ -715,6 +767,8 @@ public static void checkState(boolean b, String errorMessageTemplate, int p1, in * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, int p1, long p2) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1, p2)); @@ -729,6 +783,8 @@ public static void checkState(boolean b, String errorMessageTemplate, int p1, lo * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean b, String errorMessageTemplate, int p1, @CheckForNull Object p2) { if (!b) { @@ -744,6 +800,8 @@ public static void checkState( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, long p1, char p2) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1, p2)); @@ -758,6 +816,8 @@ public static void checkState(boolean b, String errorMessageTemplate, long p1, c * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, long p1, int p2) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1, p2)); @@ -772,6 +832,8 @@ public static void checkState(boolean b, String errorMessageTemplate, long p1, i * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState(boolean b, String errorMessageTemplate, long p1, long p2) { if (!b) { throw new IllegalStateException(lenientFormat(errorMessageTemplate, p1, p2)); @@ -786,6 +848,8 @@ public static void checkState(boolean b, String errorMessageTemplate, long p1, l * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean b, String errorMessageTemplate, long p1, @CheckForNull Object p2) { if (!b) { @@ -801,6 +865,8 @@ public static void checkState( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean b, String errorMessageTemplate, @CheckForNull Object p1, char p2) { if (!b) { @@ -816,6 +882,8 @@ public static void checkState( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean b, String errorMessageTemplate, @CheckForNull Object p1, int p2) { if (!b) { @@ -831,6 +899,8 @@ public static void checkState( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean b, String errorMessageTemplate, @CheckForNull Object p1, long p2) { if (!b) { @@ -846,6 +916,8 @@ public static void checkState( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean b, String errorMessageTemplate, @CheckForNull Object p1, @CheckForNull Object p2) { if (!b) { @@ -861,6 +933,8 @@ public static void checkState( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean b, String errorMessageTemplate, @@ -880,6 +954,8 @@ public static void checkState( * * @since 20.0 (varargs overload since 2.0) */ + @AssertMethod(IllegalStateException.class) + @Pure public static void checkState( boolean b, String errorMessageTemplate, diff --git a/guava/src/com/google/common/base/Verify.java b/guava/src/com/google/common/base/Verify.java index 3e99cd8f395c..c1036d42fcba 100644 --- a/guava/src/com/google/common/base/Verify.java +++ b/guava/src/com/google/common/base/Verify.java @@ -21,6 +21,8 @@ import javax.annotation.CheckForNull; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; +import org.checkerframework.dataflow.qual.AssertMethod; +import org.checkerframework.dataflow.qual.Pure; /** * Static convenience methods that serve the same purpose as Java language %regex[.*.class] 1.1.2 - 3.35.0 + 3.41.0 1.20 3.1.0 From ab472b3c475b0ff6d1da46514e93959d57dc02e7 Mon Sep 17 00:00:00 2001 From: Suzanne Millstein Date: Mon, 18 Dec 2023 14:40:09 -0800 Subject: [PATCH 2/2] Adapt to CF's type argument inference improvements. (#78) --- guava/src/com/google/common/io/ByteSource.java | 8 ++++++-- pom.xml | 10 +++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/guava/src/com/google/common/io/ByteSource.java b/guava/src/com/google/common/io/ByteSource.java index 594e14687175..5e4fd4171fbb 100644 --- a/guava/src/com/google/common/io/ByteSource.java +++ b/guava/src/com/google/common/io/ByteSource.java @@ -558,7 +558,11 @@ public boolean isEmpty() throws IOException { } @Override - @SuppressWarnings("value:return") // off is at most equal to unslicedSize and length is non-negative + @SuppressWarnings({ + // off is at most equal to unslicedSize and length is non-negative. + "value:return", + // poly + inference problem. + "type.arguments.not.inferred"}) public Optional<@NonNegative Long> sizeIfKnown() { Optional<@NonNegative Long> optionalUnslicedSize = ByteSource.this.sizeIfKnown(); if (optionalUnslicedSize.isPresent()) { @@ -708,7 +712,7 @@ public boolean isEmpty() throws IOException { } @Override - @SuppressWarnings("value:return") // Long.MAX_VALUE is non-negative + @SuppressWarnings("value:type.arguments.not.inferred") // Long.MAX_VALUE is non-negative public Optional<@NonNegative Long> sizeIfKnown() { if (!(sources instanceof Collection)) { // Infinite Iterables can cause problems here. Of course, it's true that most of the other diff --git a/pom.xml b/pom.xml index 3b29a6619871..9daf85189217 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ %regex[.*.class] 1.1.2 - 3.41.0 + 3.43.0-SNAPSHOT 1.20 3.1.0 @@ -255,6 +255,14 @@ scp://dummy.server/dontinstall/usestaging + + + snapshots-repo + https://oss.sonatype.org/content/repositories/snapshots + false + true + +