From 148c6ab2d92676af222cce05a4d11f9fdd2851c2 Mon Sep 17 00:00:00 2001 From: Chris Povirk Date: Mon, 7 Oct 2024 11:12:56 -0400 Subject: [PATCH] Annotate new overrides in collection implementations. (#75) --- src/java.base/share/classes/java/util/HashSet.java | 4 ++-- .../share/classes/java/util/IdentityHashMap.java | 2 +- src/java.base/share/classes/java/util/TreeMap.java | 9 +++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/java.base/share/classes/java/util/HashSet.java b/src/java.base/share/classes/java/util/HashSet.java index 02dc0b4ee9d..43401224059 100644 --- a/src/java.base/share/classes/java/util/HashSet.java +++ b/src/java.base/share/classes/java/util/HashSet.java @@ -382,12 +382,12 @@ public Spliterator spliterator() { } @Override - public Object[] toArray() { + public @Nullable Object[] toArray() { return map.keysToArray(new Object[map.size()]); } @Override - public T[] toArray(T[] a) { + public T[] toArray(T[] a) { return map.keysToArray(map.prepareArray(a)); } diff --git a/src/java.base/share/classes/java/util/IdentityHashMap.java b/src/java.base/share/classes/java/util/IdentityHashMap.java index f17ce1e0298..80a90dc8976 100644 --- a/src/java.base/share/classes/java/util/IdentityHashMap.java +++ b/src/java.base/share/classes/java/util/IdentityHashMap.java @@ -1444,7 +1444,7 @@ public void replaceAll(BiFunction function) { * {@code false}. */ @Override - public boolean remove(Object key, Object value) { + public boolean remove(@Nullable Object key, @Nullable Object value) { return removeMapping(key, value); } diff --git a/src/java.base/share/classes/java/util/TreeMap.java b/src/java.base/share/classes/java/util/TreeMap.java index f28c046aafe..9f65dec28a3 100644 --- a/src/java.base/share/classes/java/util/TreeMap.java +++ b/src/java.base/share/classes/java/util/TreeMap.java @@ -25,6 +25,7 @@ package java.util; +import org.jspecify.annotations.NonNull; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @@ -581,7 +582,7 @@ final Entry getLowerEntry(K key) { } @Override - public V putIfAbsent(K key, V value) { + public @Nullable V putIfAbsent(K key, V value) { return put(key, value, false); } @@ -666,7 +667,7 @@ else if (cmp > 0) * remapping function modified this map */ @Override - public V computeIfPresent(K key, BiFunction remappingFunction) { + public @Nullable V computeIfPresent(K key, BiFunction remappingFunction) { Objects.requireNonNull(remappingFunction); Entry oldEntry = getEntry(key); if (oldEntry != null && oldEntry.value != null) { @@ -687,7 +688,7 @@ public V computeIfPresent(K key, BiFunction r * remapping function modified this map */ @Override - public V compute(K key, BiFunction remappingFunction) { + public @Nullable V compute(K key, BiFunction remappingFunction) { Objects.requireNonNull(remappingFunction); V newValue; Entry t = root; @@ -749,7 +750,7 @@ else if (cmp > 0) * remapping function modified this map */ @Override - public V merge(K key, V value, BiFunction remappingFunction) { + public @Nullable V merge(K key, @NonNull V value, BiFunction remappingFunction) { Objects.requireNonNull(remappingFunction); Objects.requireNonNull(value); Entry t = root;