From f3391dc23b6c59a02bf897b1b7bfe8ef80164228 Mon Sep 17 00:00:00 2001 From: Aosen Xiong Date: Wed, 7 May 2025 18:04:08 -0400 Subject: [PATCH 1/2] Fix: Remove type parameter upperbound for `ConcurrentHashMap` --- .../share/classes/java/util/concurrent/ConcurrentHashMap.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java b/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java index e71bd5c2949..aee568781df 100644 --- a/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java +++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java @@ -279,7 +279,7 @@ * @param the type of mapped values */ @AnnotatedFor({"nullness"}) -public class ConcurrentHashMap extends AbstractMap +public class ConcurrentHashMap extends AbstractMap implements ConcurrentMap, Serializable { private static final long serialVersionUID = 7249069246763182397L; From fccf7744d7965d753f9341ec15314a5a3d7218a3 Mon Sep 17 00:00:00 2001 From: Aosen Xiong Date: Thu, 8 May 2025 00:17:03 -0400 Subject: [PATCH 2/2] Remove redundant `@NonNull` annotations --- src/java.base/share/classes/java/lang/Comparable.java | 2 +- .../classes/java/lang/reflect/ParameterizedType.java | 5 ++--- src/java.base/share/classes/java/util/ArrayDeque.java | 3 +-- src/java.base/share/classes/java/util/Hashtable.java | 3 +-- src/java.base/share/classes/java/util/Objects.java | 2 +- .../share/classes/java/util/PriorityQueue.java | 3 +-- src/java.base/share/classes/java/util/TreeMap.java | 2 +- .../java/util/concurrent/ArrayBlockingQueue.java | 5 ++--- .../classes/java/util/concurrent/BlockingDeque.java | 2 +- .../classes/java/util/concurrent/BlockingQueue.java | 3 +-- .../java/util/concurrent/ConcurrentHashMap.java | 11 +++++------ .../java/util/concurrent/ConcurrentLinkedDeque.java | 6 +++--- .../java/util/concurrent/ConcurrentLinkedQueue.java | 7 +++---- .../classes/java/util/concurrent/ConcurrentMap.java | 3 +-- .../java/util/concurrent/ConcurrentSkipListSet.java | 5 ++--- .../java/util/concurrent/CopyOnWriteArrayList.java | 11 +++++------ .../java/util/concurrent/CopyOnWriteArraySet.java | 5 ++--- .../classes/java/util/concurrent/DelayQueue.java | 3 +-- .../java/util/concurrent/LinkedBlockingDeque.java | 5 ++--- .../java/util/concurrent/LinkedBlockingQueue.java | 5 ++--- .../java/util/concurrent/LinkedTransferQueue.java | 5 ++--- .../java/util/concurrent/PriorityBlockingQueue.java | 5 ++--- .../java/util/concurrent/SynchronousQueue.java | 3 +-- 23 files changed, 43 insertions(+), 61 deletions(-) diff --git a/src/java.base/share/classes/java/lang/Comparable.java b/src/java.base/share/classes/java/lang/Comparable.java index 141698b563a..1655c388719 100644 --- a/src/java.base/share/classes/java/lang/Comparable.java +++ b/src/java.base/share/classes/java/lang/Comparable.java @@ -110,7 +110,7 @@ * @since 1.2 */ @AnnotatedFor({"lock", "nullness", "index"}) -public interface Comparable { +public interface Comparable { /** * Compares this object with the specified object for order. Returns a * negative integer, zero, or a positive integer as this object is less diff --git a/src/java.base/share/classes/java/lang/reflect/ParameterizedType.java b/src/java.base/share/classes/java/lang/reflect/ParameterizedType.java index f3ad1278663..d9c76014cc0 100644 --- a/src/java.base/share/classes/java/lang/reflect/ParameterizedType.java +++ b/src/java.base/share/classes/java/lang/reflect/ParameterizedType.java @@ -25,7 +25,6 @@ package java.lang.reflect; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.framework.qual.AnnotatedFor; @@ -68,7 +67,7 @@ public interface ParameterizedType extends Type { * be instantiated for any reason * @since 1.5 */ - @NonNull Type @NonNull [] getActualTypeArguments(); + Type[] getActualTypeArguments(); /** * Returns the {@code Type} object representing the class or interface @@ -78,7 +77,7 @@ public interface ParameterizedType extends Type { * that declared this type * @since 1.5 */ - @NonNull Type getRawType(); + Type getRawType(); /** * Returns a {@code Type} object representing the type that this type diff --git a/src/java.base/share/classes/java/util/ArrayDeque.java b/src/java.base/share/classes/java/util/ArrayDeque.java index 21ed93dd596..7ce00e5788c 100644 --- a/src/java.base/share/classes/java/util/ArrayDeque.java +++ b/src/java.base/share/classes/java/util/ArrayDeque.java @@ -41,7 +41,6 @@ import org.checkerframework.checker.nonempty.qual.NonEmpty; import org.checkerframework.checker.nonempty.qual.PolyNonEmpty; import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -103,7 +102,7 @@ * @since 1.6 */ @AnnotatedFor({"lock", "nullness", "index"}) -public class ArrayDeque extends AbstractCollection +public class ArrayDeque extends AbstractCollection implements Deque, Cloneable, Serializable { /* diff --git a/src/java.base/share/classes/java/util/Hashtable.java b/src/java.base/share/classes/java/util/Hashtable.java index 16d89d0a9f8..d915df1b5fd 100644 --- a/src/java.base/share/classes/java/util/Hashtable.java +++ b/src/java.base/share/classes/java/util/Hashtable.java @@ -33,7 +33,6 @@ import org.checkerframework.checker.nullness.qual.EnsuresKeyFor; import org.checkerframework.checker.nullness.qual.EnsuresKeyForIf; import org.checkerframework.checker.nullness.qual.KeyFor; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.UnknownSignedness; @@ -151,7 +150,7 @@ */ @CFComment({"lock: This collection can only contain nonnull values"}) @AnnotatedFor({"lock", "nullness", "index"}) -public class Hashtable +public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { diff --git a/src/java.base/share/classes/java/util/Objects.java b/src/java.base/share/classes/java/util/Objects.java index 8983d83a6fe..a5d6a5caa22 100644 --- a/src/java.base/share/classes/java/util/Objects.java +++ b/src/java.base/share/classes/java/util/Objects.java @@ -334,7 +334,7 @@ public static boolean nonNull(@GuardSatisfied @Nullable @UnknownSignedness Objec * the {@code supplier.get()} value is {@code null} * @since 9 */ - public static T requireNonNullElseGet(@Nullable T obj, Supplier supplier) { + public static T requireNonNullElseGet(@Nullable T obj, Supplier supplier) { return (obj != null) ? obj : requireNonNull(requireNonNull(supplier, "supplier").get(), "supplier.get()"); } diff --git a/src/java.base/share/classes/java/util/PriorityQueue.java b/src/java.base/share/classes/java/util/PriorityQueue.java index faa59d5f886..6fd0de159db 100644 --- a/src/java.base/share/classes/java/util/PriorityQueue.java +++ b/src/java.base/share/classes/java/util/PriorityQueue.java @@ -32,7 +32,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; import org.checkerframework.checker.nonempty.qual.PolyNonEmpty; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -103,7 +102,7 @@ @CFComment({"lock/nullness: This class doesn't permits null elements"}) @AnnotatedFor({"lock", "nullness", "index"}) @SuppressWarnings("unchecked") -public class PriorityQueue extends AbstractQueue +public class PriorityQueue extends AbstractQueue implements java.io.Serializable { @java.io.Serial diff --git a/src/java.base/share/classes/java/util/TreeMap.java b/src/java.base/share/classes/java/util/TreeMap.java index da264a0d9eb..143b32f0203 100644 --- a/src/java.base/share/classes/java/util/TreeMap.java +++ b/src/java.base/share/classes/java/util/TreeMap.java @@ -1651,7 +1651,7 @@ static K keyOrNull(TreeMap.Entry e) { * Returns the key corresponding to the specified Entry. * @throws NoSuchElementException if the Entry is null */ - static K key(@NonNull Entry e) { + static K key(Entry e) { if (e==null) throw new NoSuchElementException(); return e.key; diff --git a/src/java.base/share/classes/java/util/concurrent/ArrayBlockingQueue.java b/src/java.base/share/classes/java/util/concurrent/ArrayBlockingQueue.java index 0b22a67b0c7..f03a0186a47 100644 --- a/src/java.base/share/classes/java/util/concurrent/ArrayBlockingQueue.java +++ b/src/java.base/share/classes/java/util/concurrent/ArrayBlockingQueue.java @@ -39,7 +39,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmpty; import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -1496,7 +1495,7 @@ public boolean removeIf(Predicate filter) { /** * @throws NullPointerException {@inheritDoc} */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> c.contains(e)); } @@ -1504,7 +1503,7 @@ public boolean removeAll(Collection c) { + public boolean retainAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> !c.contains(e)); } diff --git a/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java b/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java index 2180e76e280..30ffeb36dea 100644 --- a/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java +++ b/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java @@ -206,7 +206,7 @@ * @param the type of elements held in this deque */ @AnnotatedFor({"nullness"}) -public interface BlockingDeque extends BlockingQueue, Deque { +public interface BlockingDeque extends BlockingQueue, Deque { /* * We have "diamond" multiple interface inheritance here, and that * introduces ambiguities. Methods might end up with different diff --git a/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java b/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java index b4e99d9d203..b702f773460 100644 --- a/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java +++ b/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java @@ -38,7 +38,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmpty; import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.signedness.qual.UnknownSignedness; import org.checkerframework.dataflow.qual.Pure; @@ -186,7 +185,7 @@ * @param the type of elements held in this queue */ @AnnotatedFor({"nullness"}) -public interface BlockingQueue extends Queue { +public interface BlockingQueue extends Queue { /** * Inserts the specified element into this queue if it is possible to do * so immediately without violating capacity restrictions, returning diff --git a/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java b/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java index aee568781df..3f4e31387f1 100644 --- a/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java +++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java @@ -43,7 +43,6 @@ import org.checkerframework.checker.nullness.qual.EnsuresKeyForIf; import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf; import org.checkerframework.checker.nullness.qual.KeyFor; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -279,7 +278,7 @@ * @param the type of mapped values */ @AnnotatedFor({"nullness"}) -public class ConcurrentHashMap extends AbstractMap +public class ConcurrentHashMap extends AbstractMap implements ConcurrentMap, Serializable { private static final long serialVersionUID = 7249069246763182397L; @@ -4580,7 +4579,7 @@ public final String toString() { } @Pure - public final boolean containsAll(Collection c) { + public final boolean containsAll(Collection c) { if (c != this) { for (Object e : c) { if (e == null || !contains(e)) @@ -4590,7 +4589,7 @@ public final boolean containsAll(Collection c) { + public boolean removeAll(Collection c) { if (c == null) throw new NullPointerException(); boolean modified = false; // Use (c instanceof Set) as a hint that lookup in c is as @@ -4612,7 +4611,7 @@ public boolean removeAll(Collection c) { + public final boolean retainAll(Collection c) { if (c == null) throw new NullPointerException(); boolean modified = false; for (Iterator it = iterator(); it.hasNext();) { @@ -4804,7 +4803,7 @@ public final boolean addAll(Collection c) { throw new UnsupportedOperationException(); } - @Override public boolean removeAll(Collection c) { + @Override public boolean removeAll(Collection c) { if (c == null) throw new NullPointerException(); boolean modified = false; for (Iterator it = iterator(); it.hasNext();) { diff --git a/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java b/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java index 455ddf84ff6..739c90c40f0 100644 --- a/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java +++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java @@ -108,7 +108,7 @@ * @param the type of elements held in this deque */ @AnnotatedFor({"nullness"}) -public class ConcurrentLinkedDeque +public class ConcurrentLinkedDeque extends AbstractCollection implements Deque, java.io.Serializable { @@ -1641,7 +1641,7 @@ public boolean removeIf(Predicate filter) { /** * @throws NullPointerException {@inheritDoc} */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> c.contains(e)); } @@ -1649,7 +1649,7 @@ public boolean removeAll(Collection c) { + public boolean retainAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> !c.contains(e)); } diff --git a/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java b/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java index c57cb976688..5803d1d6117 100644 --- a/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java +++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java @@ -39,7 +39,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmpty; import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -120,7 +119,7 @@ * @param the type of elements held in this queue */ @AnnotatedFor({"nullness"}) -public class ConcurrentLinkedQueue extends AbstractQueue +public class ConcurrentLinkedQueue extends AbstractQueue implements Queue, java.io.Serializable { private static final long serialVersionUID = 196745693267521676L; @@ -994,7 +993,7 @@ public boolean removeIf(Predicate filter) { /** * @throws NullPointerException {@inheritDoc} */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> c.contains(e)); } @@ -1002,7 +1001,7 @@ public boolean removeAll(Collection c) { + public boolean retainAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> !c.contains(e)); } diff --git a/src/java.base/share/classes/java/util/concurrent/ConcurrentMap.java b/src/java.base/share/classes/java/util/concurrent/ConcurrentMap.java index 6726489e1fb..aab4036dad6 100644 --- a/src/java.base/share/classes/java/util/concurrent/ConcurrentMap.java +++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentMap.java @@ -37,7 +37,6 @@ import org.checkerframework.checker.signedness.qual.UnknownSignedness; import org.checkerframework.checker.nullness.qual.EnsuresKeyFor; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.dataflow.qual.Pure; @@ -77,7 +76,7 @@ * @param the type of mapped values */ @AnnotatedFor({"nullness"}) -public interface ConcurrentMap extends Map { +public interface ConcurrentMap extends Map { /** * {@inheritDoc} diff --git a/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListSet.java b/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListSet.java index 11038b52fe6..0c4b4ea031b 100644 --- a/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListSet.java +++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListSet.java @@ -40,7 +40,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.signedness.qual.UnknownSignedness; import org.checkerframework.dataflow.qual.Pure; @@ -105,7 +104,7 @@ * @since 1.6 */ @AnnotatedFor({"nullness"}) -public class ConcurrentSkipListSet +public class ConcurrentSkipListSet extends AbstractSet implements NavigableSet, Cloneable, java.io.Serializable { @@ -352,7 +351,7 @@ public boolean equals(@Nullable Object o) { * @throws NullPointerException if the specified collection or any * of its elements are null */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { // Override AbstractSet version to avoid unnecessary call to size() boolean modified = false; for (Object e : c) diff --git a/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java b/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java index cec8b6d32e2..f37e11cb967 100644 --- a/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java +++ b/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java @@ -39,7 +39,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -670,7 +669,7 @@ public boolean containsAll(Collection c) { * or if the specified collection is null * @see #remove(Object) */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> c.contains(e)); } @@ -691,7 +690,7 @@ public boolean removeAll(Collection c) { + public boolean retainAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> !c.contains(e)); } @@ -1313,7 +1312,7 @@ public boolean contains(@Nullable @UnknownSignedness Object o) { } @Pure - public boolean containsAll(Collection c) { + public boolean containsAll(Collection c) { final Object[] es; final int offset; final int size; @@ -1525,12 +1524,12 @@ public void sort(Comparator c) { } } - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> c.contains(e)); } - public boolean retainAll(Collection c) { + public boolean retainAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> !c.contains(e)); } diff --git a/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArraySet.java b/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArraySet.java index 017289436ca..c6ed0383cc7 100644 --- a/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArraySet.java +++ b/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArraySet.java @@ -40,7 +40,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -367,7 +366,7 @@ public boolean addAll(Collection c) { * or if the specified collection is null * @see #remove(Object) */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { return al.removeAll(c); } @@ -390,7 +389,7 @@ public boolean removeAll(Collection c) { + public boolean retainAll(Collection c) { return al.retainAll(c); } diff --git a/src/java.base/share/classes/java/util/concurrent/DelayQueue.java b/src/java.base/share/classes/java/util/concurrent/DelayQueue.java index dd0b7f4b2b1..e0de28f32f3 100644 --- a/src/java.base/share/classes/java/util/concurrent/DelayQueue.java +++ b/src/java.base/share/classes/java/util/concurrent/DelayQueue.java @@ -38,7 +38,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmpty; import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -86,7 +85,7 @@ * @param the type of elements held in this queue */ @AnnotatedFor({"nullness"}) -public class DelayQueue extends AbstractQueue +public class DelayQueue extends AbstractQueue implements BlockingQueue { private final transient ReentrantLock lock = new ReentrantLock(); diff --git a/src/java.base/share/classes/java/util/concurrent/LinkedBlockingDeque.java b/src/java.base/share/classes/java/util/concurrent/LinkedBlockingDeque.java index 732b70aa9d2..b50ff103747 100644 --- a/src/java.base/share/classes/java/util/concurrent/LinkedBlockingDeque.java +++ b/src/java.base/share/classes/java/util/concurrent/LinkedBlockingDeque.java @@ -39,7 +39,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmpty; import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -1360,7 +1359,7 @@ public boolean removeIf(Predicate filter) { /** * @throws NullPointerException {@inheritDoc} */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> c.contains(e)); } @@ -1368,7 +1367,7 @@ public boolean removeAll(Collection c) { + public boolean retainAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> !c.contains(e)); } diff --git a/src/java.base/share/classes/java/util/concurrent/LinkedBlockingQueue.java b/src/java.base/share/classes/java/util/concurrent/LinkedBlockingQueue.java index a24e36f1f49..3a6061321f8 100644 --- a/src/java.base/share/classes/java/util/concurrent/LinkedBlockingQueue.java +++ b/src/java.base/share/classes/java/util/concurrent/LinkedBlockingQueue.java @@ -38,7 +38,6 @@ import org.checkerframework.checker.lock.qual.GuardSatisfied; import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -1043,7 +1042,7 @@ public boolean removeIf(Predicate filter) { /** * @throws NullPointerException {@inheritDoc} */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> c.contains(e)); } @@ -1051,7 +1050,7 @@ public boolean removeAll(Collection c) { + public boolean retainAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> !c.contains(e)); } diff --git a/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java b/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java index 0011eb385c5..79ec1d131b1 100644 --- a/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java +++ b/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java @@ -39,7 +39,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmpty; import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -1566,7 +1565,7 @@ public boolean removeIf(Predicate filter) { /** * @throws NullPointerException {@inheritDoc} */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> c.contains(e)); } @@ -1574,7 +1573,7 @@ public boolean removeAll(Collection c) { + public boolean retainAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> !c.contains(e)); } diff --git a/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java b/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java index e6ca1ad852f..79faee4921f 100644 --- a/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java +++ b/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java @@ -39,7 +39,6 @@ import org.checkerframework.checker.nonempty.qual.EnsuresNonEmpty; import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; import org.checkerframework.checker.nonempty.qual.NonEmpty; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -1036,7 +1035,7 @@ public boolean removeIf(Predicate filter) { /** * @throws NullPointerException {@inheritDoc} */ - public boolean removeAll(Collection c) { + public boolean removeAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> c.contains(e)); } @@ -1044,7 +1043,7 @@ public boolean removeAll(Collection c) { + public boolean retainAll(Collection c) { Objects.requireNonNull(c); return bulkRemove(e -> !c.contains(e)); } diff --git a/src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java b/src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java index 0f4e904297a..addb00aba61 100644 --- a/src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java +++ b/src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java @@ -38,7 +38,6 @@ import org.checkerframework.checker.lock.qual.GuardSatisfied; import org.checkerframework.checker.nonempty.qual.EnsuresNonEmptyIf; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.PolyNull; import org.checkerframework.checker.signedness.qual.PolySigned; @@ -99,7 +98,7 @@ * @param the type of elements held in this queue */ @AnnotatedFor({"nullness"}) -public class SynchronousQueue extends AbstractQueue +public class SynchronousQueue extends AbstractQueue implements BlockingQueue, java.io.Serializable { private static final long serialVersionUID = -3223113410248163686L;