diff --git a/android/guava-tests/test/com/google/common/io/ByteStreamsTest.java b/android/guava-tests/test/com/google/common/io/ByteStreamsTest.java index 36f1cc157c40..96f13f498aee 100644 --- a/android/guava-tests/test/com/google/common/io/ByteStreamsTest.java +++ b/android/guava-tests/test/com/google/common/io/ByteStreamsTest.java @@ -19,6 +19,7 @@ import static com.google.common.io.ByteStreams.newDataInput; import static com.google.common.io.ByteStreams.newDataOutput; import static com.google.common.truth.Truth.assertThat; +import static java.lang.Math.min; import static java.lang.System.arraycopy; import static java.nio.charset.StandardCharsets.US_ASCII; import static java.nio.charset.StandardCharsets.UTF_16; @@ -469,7 +470,7 @@ private static class SlowSkipper extends FilterInputStream { @Override public long skip(long n) throws IOException { - return super.skip(Math.min(max, n)); + return super.skip(min(max, n)); } } diff --git a/android/guava-tests/test/com/google/common/io/CharStreamsTest.java b/android/guava-tests/test/com/google/common/io/CharStreamsTest.java index eb0f1b8792d7..88119950adbd 100644 --- a/android/guava-tests/test/com/google/common/io/CharStreamsTest.java +++ b/android/guava-tests/test/com/google/common/io/CharStreamsTest.java @@ -18,6 +18,7 @@ import static com.google.common.base.Strings.repeat; import static com.google.common.truth.Truth.assertThat; +import static java.lang.Math.max; import static org.junit.Assert.assertThrows; import com.google.common.collect.ImmutableList; @@ -295,7 +296,7 @@ public int read(char[] cbuf, int off, int len) throws IOException { } // read fewer than the max number of chars to read // shouldn't be a problem unless the buffer is shrinking each call - return in.read(cbuf, off, Math.max(len - 1024, 0)); + return in.read(cbuf, off, max(len - 1024, 0)); } }; } diff --git a/android/guava/src/com/google/common/base/FunctionalEquivalence.java b/android/guava/src/com/google/common/base/FunctionalEquivalence.java index 3c50db2d8530..367e17626304 100644 --- a/android/guava/src/com/google/common/base/FunctionalEquivalence.java +++ b/android/guava/src/com/google/common/base/FunctionalEquivalence.java @@ -20,6 +20,7 @@ import com.google.common.annotations.GwtIncompatible; import com.google.common.annotations.J2ktIncompatible; import java.io.Serializable; +import java.util.Objects; import org.jspecify.annotations.Nullable; /** @@ -66,7 +67,7 @@ public boolean equals(@Nullable Object obj) { @Override public int hashCode() { - return Objects.hashCode(function, resultEquivalence); + return Objects.hash(function, resultEquivalence); } @Override diff --git a/android/guava/src/com/google/common/base/Predicate.java b/android/guava/src/com/google/common/base/Predicate.java index eadfbb2a68a1..75e3e5d75f0d 100644 --- a/android/guava/src/com/google/common/base/Predicate.java +++ b/android/guava/src/com/google/common/base/Predicate.java @@ -15,6 +15,7 @@ package com.google.common.base; import com.google.common.annotations.GwtCompatible; +import java.util.Objects; import org.jspecify.annotations.Nullable; /** @@ -52,8 +53,8 @@ public interface Predicate { * * * diff --git a/android/guava/src/com/google/common/base/Predicates.java b/android/guava/src/com/google/common/base/Predicates.java index f936b3dd5d19..6501b5c6b5a5 100644 --- a/android/guava/src/com/google/common/base/Predicates.java +++ b/android/guava/src/com/google/common/base/Predicates.java @@ -15,13 +15,13 @@ package com.google.common.base; import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.Arrays.asList; import com.google.common.annotations.GwtCompatible; import com.google.common.annotations.GwtIncompatible; import com.google.common.annotations.J2ktIncompatible; import java.io.Serializable; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -133,7 +133,7 @@ public final class Predicates { */ public static Predicate and( Predicate first, Predicate second) { - return new AndPredicate<>(Predicates.asList(checkNotNull(first), checkNotNull(second))); + return new AndPredicate<>(asList(checkNotNull(first), checkNotNull(second))); } /** @@ -173,7 +173,7 @@ public final class Predicates { */ public static Predicate or( Predicate first, Predicate second) { - return new OrPredicate<>(Predicates.asList(checkNotNull(first), checkNotNull(second))); + return new OrPredicate<>(asList(checkNotNull(first), checkNotNull(second))); } /** @@ -185,9 +185,7 @@ public final class Predicates { * serializable. */ public static Predicate equalTo(@ParametricNullness T target) { - return (target == null) - ? Predicates.isNull() - : new IsEqualToPredicate(target).withNarrowedType(); + return target == null ? isNull() : new IsEqualToPredicate(target).withNarrowedType(); } /** @@ -413,9 +411,9 @@ public String toString() { */ private static final class AndPredicate implements Predicate, Serializable { - private final List> components; + private final List> components; - private AndPredicate(List> components) { + private AndPredicate(List> components) { this.components = components; } @@ -458,9 +456,9 @@ public String toString() { */ private static final class OrPredicate implements Predicate, Serializable { - private final List> components; + private final List> components; - private OrPredicate(List> components) { + private OrPredicate(List> components) { this.components = components; } @@ -789,17 +787,11 @@ public String toString() { @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0; } - private static List> asList( - Predicate first, Predicate second) { - // TODO(kevinb): understand why we still get a warning despite @SafeVarargs! - return Arrays.asList(first, second); - } - - private static List defensiveCopy(T... array) { - return defensiveCopy(Arrays.asList(array)); + private static List defensiveCopy(T[] array) { + return defensiveCopy(asList(array)); } - static List defensiveCopy(Iterable iterable) { + private static List defensiveCopy(Iterable iterable) { ArrayList list = new ArrayList<>(); for (T element : iterable) { list.add(checkNotNull(element)); diff --git a/android/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java b/android/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java index 6d83772e88f4..5d90c26b5582 100644 --- a/android/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java +++ b/android/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java @@ -19,6 +19,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.collect.CollectPreconditions.checkNonnegative; +import static com.google.common.collect.CollectPreconditions.checkRemove; import com.google.common.annotations.GwtCompatible; import com.google.common.annotations.GwtIncompatible; @@ -197,7 +198,7 @@ public T next() { @Override public void remove() { checkForConcurrentModification(); - CollectPreconditions.checkRemove(toRemove != -1); + checkRemove(toRemove != -1); size -= backingMap.removeEntry(toRemove); entryIndex = backingMap.nextIndexAfterRemove(entryIndex, toRemove); toRemove = -1; diff --git a/android/guava/src/com/google/common/collect/CollectPreconditions.java b/android/guava/src/com/google/common/collect/CollectPreconditions.java index 0595e718e335..1270551cc64e 100644 --- a/android/guava/src/com/google/common/collect/CollectPreconditions.java +++ b/android/guava/src/com/google/common/collect/CollectPreconditions.java @@ -20,6 +20,7 @@ import com.google.common.annotations.GwtCompatible; import com.google.errorprone.annotations.CanIgnoreReturnValue; +import java.util.Iterator; import org.jspecify.annotations.Nullable; /** Precondition checks useful in collection implementations. */ @@ -50,6 +51,15 @@ static long checkNonnegative(long value, String name) { return value; } + /** A variant of {@link #checkNonnegative} that throws {@link IndexOutOfBoundsException}. */ + @CanIgnoreReturnValue + static int checkNonnegativeIndex(int value, String name) { + if (value < 0) { + throw new IndexOutOfBoundsException(name + " cannot be negative but was: " + value); + } + return value; + } + static void checkPositive(int value, String name) { if (value <= 0) { throw new IllegalArgumentException(name + " must be positive but was: " + value); @@ -57,7 +67,7 @@ static void checkPositive(int value, String name) { } /** - * Precondition tester for {@code Iterator.remove()} that throws an exception with a consistent + * Precondition tester for {@link Iterator#remove} that throws an exception with a consistent * error message. */ static void checkRemove(boolean canRemove) { diff --git a/android/guava/src/com/google/common/collect/HashBiMap.java b/android/guava/src/com/google/common/collect/HashBiMap.java index 71124fb4313a..3bf519cb08ac 100644 --- a/android/guava/src/com/google/common/collect/HashBiMap.java +++ b/android/guava/src/com/google/common/collect/HashBiMap.java @@ -16,6 +16,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.collect.CollectPreconditions.checkNonnegative; +import static com.google.common.collect.CollectPreconditions.checkRemove; import static com.google.common.collect.Hashing.smearedHash; import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT; import static com.google.common.collect.NullnessCasts.unsafeNull; @@ -730,7 +731,7 @@ public T next() { @Override public void remove() { checkForComodification(); - CollectPreconditions.checkRemove(indexToRemove != ABSENT); + checkRemove(indexToRemove != ABSENT); biMap.removeEntry(indexToRemove); if (index == biMap.size) { index = indexToRemove; diff --git a/android/guava/src/com/google/common/collect/ImmutableSortedMultiset.java b/android/guava/src/com/google/common/collect/ImmutableSortedMultiset.java index d42491959902..debab3163627 100644 --- a/android/guava/src/com/google/common/collect/ImmutableSortedMultiset.java +++ b/android/guava/src/com/google/common/collect/ImmutableSortedMultiset.java @@ -16,6 +16,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.collect.CollectPreconditions.checkNonnegative; import static com.google.common.collect.Lists.newArrayListWithCapacity; import com.google.common.annotations.GwtIncompatible; @@ -595,7 +596,7 @@ public Builder add(E... elements) { @Override public Builder addCopies(E element, int occurrences) { checkNotNull(element); - CollectPreconditions.checkNonnegative(occurrences, "occurrences"); + checkNonnegative(occurrences, "occurrences"); if (occurrences == 0) { return this; } @@ -620,7 +621,7 @@ public Builder addCopies(E element, int occurrences) { @Override public Builder setCount(E element, int count) { checkNotNull(element); - CollectPreconditions.checkNonnegative(count, "count"); + checkNonnegative(count, "count"); maintenance(); elements[length] = element; counts[length] = ~count; diff --git a/android/guava/src/com/google/common/collect/Iterables.java b/android/guava/src/com/google/common/collect/Iterables.java index 29ab96f2ce4c..62193f4a4032 100644 --- a/android/guava/src/com/google/common/collect/Iterables.java +++ b/android/guava/src/com/google/common/collect/Iterables.java @@ -19,10 +19,10 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Predicates.instanceOf; +import static com.google.common.collect.CollectPreconditions.checkNonnegativeIndex; import static com.google.common.collect.CollectPreconditions.checkRemove; import static com.google.common.collect.Collections2.safeContains; import static com.google.common.collect.Iterators.advance; -import static com.google.common.collect.Iterators.checkNonnegative; import static com.google.common.collect.Iterators.consumingIterator; import static com.google.common.collect.Iterators.getNext; import static com.google.common.collect.Iterators.unmodifiableIterator; @@ -807,7 +807,7 @@ public Iterator iterator() { public static T get( Iterable iterable, int position, @ParametricNullness T defaultValue) { checkNotNull(iterable); - checkNonnegative(position); + checkNonnegativeIndex(position, "position"); if (iterable instanceof List) { List list = (List) iterable; return (position < list.size()) ? list.get(position) : defaultValue; diff --git a/android/guava/src/com/google/common/collect/Iterators.java b/android/guava/src/com/google/common/collect/Iterators.java index 1060f0469a56..6a92102cf8ab 100644 --- a/android/guava/src/com/google/common/collect/Iterators.java +++ b/android/guava/src/com/google/common/collect/Iterators.java @@ -20,6 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static com.google.common.base.Predicates.instanceOf; +import static com.google.common.collect.CollectPreconditions.checkNonnegativeIndex; import static com.google.common.collect.CollectPreconditions.checkRemove; import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT; @@ -842,7 +843,7 @@ T transform(@ParametricNullness F from) { */ @ParametricNullness public static T get(Iterator iterator, int position) { - checkNonnegative(position); + checkNonnegativeIndex(position, "position"); int skipped = advance(iterator, position); if (!iterator.hasNext()) { throw new IndexOutOfBoundsException( @@ -870,17 +871,11 @@ T transform(@ParametricNullness F from) { @ParametricNullness public static T get( Iterator iterator, int position, @ParametricNullness T defaultValue) { - checkNonnegative(position); + checkNonnegativeIndex(position, "position"); advance(iterator, position); return getNext(iterator, defaultValue); } - static void checkNonnegative(int position) { - if (position < 0) { - throw new IndexOutOfBoundsException("position (" + position + ") must not be negative"); - } - } - /** * Returns the next element in {@code iterator} or {@code defaultValue} if the iterator is empty. * The {@link Iterables} analog to this method is {@link Iterables#getFirst}. diff --git a/android/guava/src/com/google/common/primitives/Ints.java b/android/guava/src/com/google/common/primitives/Ints.java index ca48fd063cd6..af4c9a6059dd 100644 --- a/android/guava/src/com/google/common/primitives/Ints.java +++ b/android/guava/src/com/google/common/primitives/Ints.java @@ -280,8 +280,6 @@ public static int max(int... array) { * @throws IllegalArgumentException if {@code min > max} * @since 21.0 */ - // A call to bare "min" or "max" would resolve to our varargs method, not to any static import. - @SuppressWarnings("StaticImportPreferred") public static int constrainToRange(int value, int min, int max) { checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max); return Math.min(Math.max(value, min), max); @@ -462,8 +460,6 @@ private enum LexicographicalComparator implements Comparator { INSTANCE; @Override - // A call to bare "min" or "max" would resolve to our varargs method, not to any static import. - @SuppressWarnings("StaticImportPreferred") public int compare(int[] left, int[] right) { int minLength = Math.min(left.length, right.length); for (int i = 0; i < minLength; i++) { diff --git a/android/guava/src/com/google/common/primitives/UnsignedInts.java b/android/guava/src/com/google/common/primitives/UnsignedInts.java index b57d7b38d0ef..741d142d609c 100644 --- a/android/guava/src/com/google/common/primitives/UnsignedInts.java +++ b/android/guava/src/com/google/common/primitives/UnsignedInts.java @@ -199,8 +199,6 @@ enum LexicographicalComparator implements Comparator { INSTANCE; @Override - // A call to bare "min" or "max" would resolve to our varargs method, not to any static import. - @SuppressWarnings("StaticImportPreferred") public int compare(int[] left, int[] right) { int minLength = Math.min(left.length, right.length); for (int i = 0; i < minLength; i++) { diff --git a/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixTrie.java b/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixTrie.java index b4bfdb6dae94..bbbac89a15c1 100644 --- a/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixTrie.java +++ b/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixTrie.java @@ -14,6 +14,8 @@ package com.google.thirdparty.publicsuffix; +import static java.lang.Math.min; + import com.google.common.annotations.GwtCompatible; import com.google.common.collect.ImmutableList; import java.util.List; @@ -209,7 +211,7 @@ private int findChild(int firstChild, int numChildren, String label) { private int compareLabel(String label, int offset) { int labelLen = label.length(); int nodeLabelLen = stringPool.charAt(offset); - int minLen = Math.min(nodeLabelLen, labelLen); + int minLen = min(nodeLabelLen, labelLen); for (int i = 0; i < minLen; i++) { char c1 = label.charAt(i); char c2 = stringPool.charAt(offset + 1 + i); diff --git a/guava-tests/test/com/google/common/io/ByteStreamsTest.java b/guava-tests/test/com/google/common/io/ByteStreamsTest.java index 36f1cc157c40..96f13f498aee 100644 --- a/guava-tests/test/com/google/common/io/ByteStreamsTest.java +++ b/guava-tests/test/com/google/common/io/ByteStreamsTest.java @@ -19,6 +19,7 @@ import static com.google.common.io.ByteStreams.newDataInput; import static com.google.common.io.ByteStreams.newDataOutput; import static com.google.common.truth.Truth.assertThat; +import static java.lang.Math.min; import static java.lang.System.arraycopy; import static java.nio.charset.StandardCharsets.US_ASCII; import static java.nio.charset.StandardCharsets.UTF_16; @@ -469,7 +470,7 @@ private static class SlowSkipper extends FilterInputStream { @Override public long skip(long n) throws IOException { - return super.skip(Math.min(max, n)); + return super.skip(min(max, n)); } } diff --git a/guava-tests/test/com/google/common/io/CharStreamsTest.java b/guava-tests/test/com/google/common/io/CharStreamsTest.java index eb0f1b8792d7..88119950adbd 100644 --- a/guava-tests/test/com/google/common/io/CharStreamsTest.java +++ b/guava-tests/test/com/google/common/io/CharStreamsTest.java @@ -18,6 +18,7 @@ import static com.google.common.base.Strings.repeat; import static com.google.common.truth.Truth.assertThat; +import static java.lang.Math.max; import static org.junit.Assert.assertThrows; import com.google.common.collect.ImmutableList; @@ -295,7 +296,7 @@ public int read(char[] cbuf, int off, int len) throws IOException { } // read fewer than the max number of chars to read // shouldn't be a problem unless the buffer is shrinking each call - return in.read(cbuf, off, Math.max(len - 1024, 0)); + return in.read(cbuf, off, max(len - 1024, 0)); } }; } diff --git a/guava/src/com/google/common/base/FunctionalEquivalence.java b/guava/src/com/google/common/base/FunctionalEquivalence.java index 3c50db2d8530..367e17626304 100644 --- a/guava/src/com/google/common/base/FunctionalEquivalence.java +++ b/guava/src/com/google/common/base/FunctionalEquivalence.java @@ -20,6 +20,7 @@ import com.google.common.annotations.GwtIncompatible; import com.google.common.annotations.J2ktIncompatible; import java.io.Serializable; +import java.util.Objects; import org.jspecify.annotations.Nullable; /** @@ -66,7 +67,7 @@ public boolean equals(@Nullable Object obj) { @Override public int hashCode() { - return Objects.hashCode(function, resultEquivalence); + return Objects.hash(function, resultEquivalence); } @Override diff --git a/guava/src/com/google/common/base/Predicate.java b/guava/src/com/google/common/base/Predicate.java index 6135d8626315..c73e9ffbd10c 100644 --- a/guava/src/com/google/common/base/Predicate.java +++ b/guava/src/com/google/common/base/Predicate.java @@ -15,6 +15,7 @@ package com.google.common.base; import com.google.common.annotations.GwtCompatible; +import java.util.Objects; import org.jspecify.annotations.Nullable; /** @@ -49,8 +50,8 @@ public interface Predicate extends java.util.functio * *
    *
  • Its execution does not cause any observable side effects. - *
  • The computation is consistent with equals; that is, {@link Objects#equal - * Objects.equal}{@code (a, b)} implies that {@code predicate.apply(a) == + *
  • The computation is consistent with equals; that is, {@link Objects#equals + * Objects.equals}{@code (a, b)} implies that {@code predicate.apply(a) == * predicate.apply(b))}. *
* diff --git a/guava/src/com/google/common/base/Predicates.java b/guava/src/com/google/common/base/Predicates.java index f936b3dd5d19..6501b5c6b5a5 100644 --- a/guava/src/com/google/common/base/Predicates.java +++ b/guava/src/com/google/common/base/Predicates.java @@ -15,13 +15,13 @@ package com.google.common.base; import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.Arrays.asList; import com.google.common.annotations.GwtCompatible; import com.google.common.annotations.GwtIncompatible; import com.google.common.annotations.J2ktIncompatible; import java.io.Serializable; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -133,7 +133,7 @@ public final class Predicates { */ public static Predicate and( Predicate first, Predicate second) { - return new AndPredicate<>(Predicates.asList(checkNotNull(first), checkNotNull(second))); + return new AndPredicate<>(asList(checkNotNull(first), checkNotNull(second))); } /** @@ -173,7 +173,7 @@ public final class Predicates { */ public static Predicate or( Predicate first, Predicate second) { - return new OrPredicate<>(Predicates.asList(checkNotNull(first), checkNotNull(second))); + return new OrPredicate<>(asList(checkNotNull(first), checkNotNull(second))); } /** @@ -185,9 +185,7 @@ public final class Predicates { * serializable. */ public static Predicate equalTo(@ParametricNullness T target) { - return (target == null) - ? Predicates.isNull() - : new IsEqualToPredicate(target).withNarrowedType(); + return target == null ? isNull() : new IsEqualToPredicate(target).withNarrowedType(); } /** @@ -413,9 +411,9 @@ public String toString() { */ private static final class AndPredicate implements Predicate, Serializable { - private final List> components; + private final List> components; - private AndPredicate(List> components) { + private AndPredicate(List> components) { this.components = components; } @@ -458,9 +456,9 @@ public String toString() { */ private static final class OrPredicate implements Predicate, Serializable { - private final List> components; + private final List> components; - private OrPredicate(List> components) { + private OrPredicate(List> components) { this.components = components; } @@ -789,17 +787,11 @@ public String toString() { @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0; } - private static List> asList( - Predicate first, Predicate second) { - // TODO(kevinb): understand why we still get a warning despite @SafeVarargs! - return Arrays.asList(first, second); - } - - private static List defensiveCopy(T... array) { - return defensiveCopy(Arrays.asList(array)); + private static List defensiveCopy(T[] array) { + return defensiveCopy(asList(array)); } - static List defensiveCopy(Iterable iterable) { + private static List defensiveCopy(Iterable iterable) { ArrayList list = new ArrayList<>(); for (T element : iterable) { list.add(checkNotNull(element)); diff --git a/guava/src/com/google/common/collect/CollectPreconditions.java b/guava/src/com/google/common/collect/CollectPreconditions.java index 0595e718e335..1270551cc64e 100644 --- a/guava/src/com/google/common/collect/CollectPreconditions.java +++ b/guava/src/com/google/common/collect/CollectPreconditions.java @@ -20,6 +20,7 @@ import com.google.common.annotations.GwtCompatible; import com.google.errorprone.annotations.CanIgnoreReturnValue; +import java.util.Iterator; import org.jspecify.annotations.Nullable; /** Precondition checks useful in collection implementations. */ @@ -50,6 +51,15 @@ static long checkNonnegative(long value, String name) { return value; } + /** A variant of {@link #checkNonnegative} that throws {@link IndexOutOfBoundsException}. */ + @CanIgnoreReturnValue + static int checkNonnegativeIndex(int value, String name) { + if (value < 0) { + throw new IndexOutOfBoundsException(name + " cannot be negative but was: " + value); + } + return value; + } + static void checkPositive(int value, String name) { if (value <= 0) { throw new IllegalArgumentException(name + " must be positive but was: " + value); @@ -57,7 +67,7 @@ static void checkPositive(int value, String name) { } /** - * Precondition tester for {@code Iterator.remove()} that throws an exception with a consistent + * Precondition tester for {@link Iterator#remove} that throws an exception with a consistent * error message. */ static void checkRemove(boolean canRemove) { diff --git a/guava/src/com/google/common/collect/Iterables.java b/guava/src/com/google/common/collect/Iterables.java index 8c41a92e8818..042948e534a7 100644 --- a/guava/src/com/google/common/collect/Iterables.java +++ b/guava/src/com/google/common/collect/Iterables.java @@ -19,10 +19,10 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Predicates.instanceOf; +import static com.google.common.collect.CollectPreconditions.checkNonnegativeIndex; import static com.google.common.collect.CollectPreconditions.checkRemove; import static com.google.common.collect.Collections2.safeContains; import static com.google.common.collect.Iterators.advance; -import static com.google.common.collect.Iterators.checkNonnegative; import static com.google.common.collect.Iterators.consumingIterator; import static com.google.common.collect.Iterators.getNext; import static com.google.common.collect.Iterators.unmodifiableIterator; @@ -799,7 +799,7 @@ public Spliterator spliterator() { public static T get( Iterable iterable, int position, @ParametricNullness T defaultValue) { checkNotNull(iterable); - checkNonnegative(position); + checkNonnegativeIndex(position, "position"); if (iterable instanceof List) { List list = (List) iterable; return (position < list.size()) ? list.get(position) : defaultValue; diff --git a/guava/src/com/google/common/collect/Iterators.java b/guava/src/com/google/common/collect/Iterators.java index 1060f0469a56..6a92102cf8ab 100644 --- a/guava/src/com/google/common/collect/Iterators.java +++ b/guava/src/com/google/common/collect/Iterators.java @@ -20,6 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static com.google.common.base.Predicates.instanceOf; +import static com.google.common.collect.CollectPreconditions.checkNonnegativeIndex; import static com.google.common.collect.CollectPreconditions.checkRemove; import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT; @@ -842,7 +843,7 @@ T transform(@ParametricNullness F from) { */ @ParametricNullness public static T get(Iterator iterator, int position) { - checkNonnegative(position); + checkNonnegativeIndex(position, "position"); int skipped = advance(iterator, position); if (!iterator.hasNext()) { throw new IndexOutOfBoundsException( @@ -870,17 +871,11 @@ T transform(@ParametricNullness F from) { @ParametricNullness public static T get( Iterator iterator, int position, @ParametricNullness T defaultValue) { - checkNonnegative(position); + checkNonnegativeIndex(position, "position"); advance(iterator, position); return getNext(iterator, defaultValue); } - static void checkNonnegative(int position) { - if (position < 0) { - throw new IndexOutOfBoundsException("position (" + position + ") must not be negative"); - } - } - /** * Returns the next element in {@code iterator} or {@code defaultValue} if the iterator is empty. * The {@link Iterables} analog to this method is {@link Iterables#getFirst}. diff --git a/guava/src/com/google/common/primitives/Ints.java b/guava/src/com/google/common/primitives/Ints.java index 5395ef7d7dff..ad2bf24bfa7b 100644 --- a/guava/src/com/google/common/primitives/Ints.java +++ b/guava/src/com/google/common/primitives/Ints.java @@ -280,8 +280,6 @@ public static int max(int... array) { * @throws IllegalArgumentException if {@code min > max} * @since 21.0 */ - // A call to bare "min" or "max" would resolve to our varargs method, not to any static import. - @SuppressWarnings("StaticImportPreferred") public static int constrainToRange(int value, int min, int max) { checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max); return Math.min(Math.max(value, min), max); @@ -462,8 +460,6 @@ private enum LexicographicalComparator implements Comparator { INSTANCE; @Override - // A call to bare "min" or "max" would resolve to our varargs method, not to any static import. - @SuppressWarnings("StaticImportPreferred") public int compare(int[] left, int[] right) { int minLength = Math.min(left.length, right.length); for (int i = 0; i < minLength; i++) { diff --git a/guava/src/com/google/common/primitives/UnsignedInts.java b/guava/src/com/google/common/primitives/UnsignedInts.java index b57d7b38d0ef..741d142d609c 100644 --- a/guava/src/com/google/common/primitives/UnsignedInts.java +++ b/guava/src/com/google/common/primitives/UnsignedInts.java @@ -199,8 +199,6 @@ enum LexicographicalComparator implements Comparator { INSTANCE; @Override - // A call to bare "min" or "max" would resolve to our varargs method, not to any static import. - @SuppressWarnings("StaticImportPreferred") public int compare(int[] left, int[] right) { int minLength = Math.min(left.length, right.length); for (int i = 0; i < minLength; i++) { diff --git a/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixTrie.java b/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixTrie.java index b4bfdb6dae94..bbbac89a15c1 100644 --- a/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixTrie.java +++ b/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixTrie.java @@ -14,6 +14,8 @@ package com.google.thirdparty.publicsuffix; +import static java.lang.Math.min; + import com.google.common.annotations.GwtCompatible; import com.google.common.collect.ImmutableList; import java.util.List; @@ -209,7 +211,7 @@ private int findChild(int firstChild, int numChildren, String label) { private int compareLabel(String label, int offset) { int labelLen = label.length(); int nodeLabelLen = stringPool.charAt(offset); - int minLen = Math.min(nodeLabelLen, labelLen); + int minLen = min(nodeLabelLen, labelLen); for (int i = 0; i < minLen; i++) { char c1 = label.charAt(i); char c2 = stringPool.charAt(offset + 1 + i);