From f74135f69c0743f8ada1cdd8756f5499007c3a7c Mon Sep 17 00:00:00 2001 From: cpovirk Date: Tue, 28 May 2024 13:38:02 -0700 Subject: [PATCH] Eliminate the need for a few `rawtypes` and `unchecked` suppressions. The changes here are similar to some of those from cl/609475939: If we have an `AtomicReferenceFieldUpdater`, we don't have to keep the raw type or perform an unchecked cast. Instead, we can use it directly as an `AtomicReferenceFieldUpdater, ...>`. RELNOTES=n/a PiperOrigin-RevId: 638008218 --- .../util/concurrent/AbstractFuture.java | 13 ++++++------- .../util/concurrent/AggregateFutureState.java | 19 +++++++++---------- .../util/concurrent/AbstractFuture.java | 13 ++++++------- .../util/concurrent/AggregateFutureState.java | 19 +++++++++---------- 4 files changed, 30 insertions(+), 34 deletions(-) diff --git a/android/guava/src/com/google/common/util/concurrent/AbstractFuture.java b/android/guava/src/com/google/common/util/concurrent/AbstractFuture.java index 95086dceecdc..0e10d9bcd3fe 100644 --- a/android/guava/src/com/google/common/util/concurrent/AbstractFuture.java +++ b/android/guava/src/com/google/common/util/concurrent/AbstractFuture.java @@ -1448,20 +1448,19 @@ boolean casValue(AbstractFuture future, @CheckForNull Object expect, Object u } /** {@link AtomicHelper} based on {@link AtomicReferenceFieldUpdater}. */ - @SuppressWarnings("rawtypes") private static final class SafeAtomicHelper extends AtomicHelper { final AtomicReferenceFieldUpdater waiterThreadUpdater; final AtomicReferenceFieldUpdater waiterNextUpdater; - final AtomicReferenceFieldUpdater waitersUpdater; - final AtomicReferenceFieldUpdater listenersUpdater; - final AtomicReferenceFieldUpdater valueUpdater; + final AtomicReferenceFieldUpdater, Waiter> waitersUpdater; + final AtomicReferenceFieldUpdater, Listener> listenersUpdater; + final AtomicReferenceFieldUpdater, Object> valueUpdater; SafeAtomicHelper( AtomicReferenceFieldUpdater waiterThreadUpdater, AtomicReferenceFieldUpdater waiterNextUpdater, - AtomicReferenceFieldUpdater waitersUpdater, - AtomicReferenceFieldUpdater listenersUpdater, - AtomicReferenceFieldUpdater valueUpdater) { + AtomicReferenceFieldUpdater, Waiter> waitersUpdater, + AtomicReferenceFieldUpdater, Listener> listenersUpdater, + AtomicReferenceFieldUpdater, Object> valueUpdater) { this.waiterThreadUpdater = waiterThreadUpdater; this.waiterNextUpdater = waiterNextUpdater; this.waitersUpdater = waitersUpdater; diff --git a/android/guava/src/com/google/common/util/concurrent/AggregateFutureState.java b/android/guava/src/com/google/common/util/concurrent/AggregateFutureState.java index 5816abf05688..45a9551834ec 100644 --- a/android/guava/src/com/google/common/util/concurrent/AggregateFutureState.java +++ b/android/guava/src/com/google/common/util/concurrent/AggregateFutureState.java @@ -158,20 +158,19 @@ abstract void compareAndSetSeenExceptions( } private static final class SafeAtomicHelper extends AtomicHelper { - final AtomicReferenceFieldUpdater, @Nullable Set> + final AtomicReferenceFieldUpdater< + ? super AggregateFutureState, ? super @Nullable Set> seenExceptionsUpdater; - final AtomicIntegerFieldUpdater> remainingCountUpdater; + final AtomicIntegerFieldUpdater> remainingCountUpdater; - @SuppressWarnings({"rawtypes", "unchecked"}) // Unavoidable with reflection API SafeAtomicHelper( - AtomicReferenceFieldUpdater seenExceptionsUpdater, - AtomicIntegerFieldUpdater remainingCountUpdater) { - this.seenExceptionsUpdater = - (AtomicReferenceFieldUpdater, @Nullable Set>) - seenExceptionsUpdater; - this.remainingCountUpdater = - (AtomicIntegerFieldUpdater>) remainingCountUpdater; + AtomicReferenceFieldUpdater< + ? super AggregateFutureState, ? super @Nullable Set> + seenExceptionsUpdater, + AtomicIntegerFieldUpdater> remainingCountUpdater) { + this.seenExceptionsUpdater = seenExceptionsUpdater; + this.remainingCountUpdater = remainingCountUpdater; } @Override diff --git a/guava/src/com/google/common/util/concurrent/AbstractFuture.java b/guava/src/com/google/common/util/concurrent/AbstractFuture.java index b0fea64e11ce..fde7fa55a51e 100644 --- a/guava/src/com/google/common/util/concurrent/AbstractFuture.java +++ b/guava/src/com/google/common/util/concurrent/AbstractFuture.java @@ -1432,20 +1432,19 @@ boolean casValue(AbstractFuture future, @CheckForNull Object expect, Object u } /** {@link AtomicHelper} based on {@link AtomicReferenceFieldUpdater}. */ - @SuppressWarnings("rawtypes") private static final class SafeAtomicHelper extends AtomicHelper { final AtomicReferenceFieldUpdater waiterThreadUpdater; final AtomicReferenceFieldUpdater waiterNextUpdater; - final AtomicReferenceFieldUpdater waitersUpdater; - final AtomicReferenceFieldUpdater listenersUpdater; - final AtomicReferenceFieldUpdater valueUpdater; + final AtomicReferenceFieldUpdater, Waiter> waitersUpdater; + final AtomicReferenceFieldUpdater, Listener> listenersUpdater; + final AtomicReferenceFieldUpdater, Object> valueUpdater; SafeAtomicHelper( AtomicReferenceFieldUpdater waiterThreadUpdater, AtomicReferenceFieldUpdater waiterNextUpdater, - AtomicReferenceFieldUpdater waitersUpdater, - AtomicReferenceFieldUpdater listenersUpdater, - AtomicReferenceFieldUpdater valueUpdater) { + AtomicReferenceFieldUpdater, Waiter> waitersUpdater, + AtomicReferenceFieldUpdater, Listener> listenersUpdater, + AtomicReferenceFieldUpdater, Object> valueUpdater) { this.waiterThreadUpdater = waiterThreadUpdater; this.waiterNextUpdater = waiterNextUpdater; this.waitersUpdater = waitersUpdater; diff --git a/guava/src/com/google/common/util/concurrent/AggregateFutureState.java b/guava/src/com/google/common/util/concurrent/AggregateFutureState.java index 5816abf05688..45a9551834ec 100644 --- a/guava/src/com/google/common/util/concurrent/AggregateFutureState.java +++ b/guava/src/com/google/common/util/concurrent/AggregateFutureState.java @@ -158,20 +158,19 @@ abstract void compareAndSetSeenExceptions( } private static final class SafeAtomicHelper extends AtomicHelper { - final AtomicReferenceFieldUpdater, @Nullable Set> + final AtomicReferenceFieldUpdater< + ? super AggregateFutureState, ? super @Nullable Set> seenExceptionsUpdater; - final AtomicIntegerFieldUpdater> remainingCountUpdater; + final AtomicIntegerFieldUpdater> remainingCountUpdater; - @SuppressWarnings({"rawtypes", "unchecked"}) // Unavoidable with reflection API SafeAtomicHelper( - AtomicReferenceFieldUpdater seenExceptionsUpdater, - AtomicIntegerFieldUpdater remainingCountUpdater) { - this.seenExceptionsUpdater = - (AtomicReferenceFieldUpdater, @Nullable Set>) - seenExceptionsUpdater; - this.remainingCountUpdater = - (AtomicIntegerFieldUpdater>) remainingCountUpdater; + AtomicReferenceFieldUpdater< + ? super AggregateFutureState, ? super @Nullable Set> + seenExceptionsUpdater, + AtomicIntegerFieldUpdater> remainingCountUpdater) { + this.seenExceptionsUpdater = seenExceptionsUpdater; + this.remainingCountUpdater = remainingCountUpdater; } @Override