summaryrefslogtreecommitdiff
path: root/ojluni/annotations/sdk/nullability/java/util/Objects.annotated.java
diff options
context:
space:
mode:
authorPete Gillin <peteg@google.com>2018-11-12 18:29:26 +0000
committerPete Gillin <peteg@google.com>2018-11-13 13:28:58 +0000
commit5b55a658679d1f6be198b07dcaf77a99bdfbff79 (patch)
tree36e1480f0eb4d0f0dc3355015479bb3d33a79cc1 /ojluni/annotations/sdk/nullability/java/util/Objects.annotated.java
parentd22837f7a8108fc12e0d417d668e4b0ca4b49ef4 (diff)
Add nullability annotations for static utils in java.util.
This change annotates Arrays, Collections, and Objects. The most interesting decision here is probably annotating the Object argument of the various Objects.requireNonNull overloads. Under the normal rules, this would be @NonNull, because the method throws NPE if it's null. This change annotates them as @Nullable because throwing NPE on null is the whole point of the method, and calling it with an argument which is provably non-null is pointless; or, to put it another way, the method exists to convert possibly-@Nullable T to definitely-@NonNull T with an exception thrown in a controlled fashion. Note that the methods involving natural sort ordering of arrays or collections require the elements to be non-null, because they end up calling e1.compareTo(e2) for arbitrary pairs of elements. For the methods that take Comparators, the nullability of the elements match the parameter of the Comparator's type parameter. Test: make core-current-stubs-nullability-validation-check-nullability-warnings Bug: 64930165 Change-Id: I52744d72da857751274fe44f58cff38e6d6b8a2f
Diffstat (limited to 'ojluni/annotations/sdk/nullability/java/util/Objects.annotated.java')
-rw-r--r--ojluni/annotations/sdk/nullability/java/util/Objects.annotated.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/ojluni/annotations/sdk/nullability/java/util/Objects.annotated.java b/ojluni/annotations/sdk/nullability/java/util/Objects.annotated.java
new file mode 100644
index 0000000000..591a022fab
--- /dev/null
+++ b/ojluni/annotations/sdk/nullability/java/util/Objects.annotated.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+package java.util;
+
+import java.util.function.Supplier;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public final class Objects {
+
+Objects() { throw new RuntimeException("Stub!"); }
+
+public static boolean equals(@libcore.util.Nullable java.lang.Object a, @libcore.util.Nullable java.lang.Object b) { throw new RuntimeException("Stub!"); }
+
+public static boolean deepEquals(@libcore.util.Nullable java.lang.Object a, @libcore.util.Nullable java.lang.Object b) { throw new RuntimeException("Stub!"); }
+
+public static int hashCode(@libcore.util.Nullable java.lang.Object o) { throw new RuntimeException("Stub!"); }
+
+public static int hash(java.lang.@libcore.util.Nullable Object @libcore.util.Nullable ... values) { throw new RuntimeException("Stub!"); }
+
+@libcore.util.NonNull public static java.lang.String toString(@libcore.util.Nullable java.lang.Object o) { throw new RuntimeException("Stub!"); }
+
+@libcore.util.NonNull public static java.lang.String toString(@libcore.util.Nullable java.lang.Object o, @libcore.util.NonNull java.lang.String nullDefault) { throw new RuntimeException("Stub!"); }
+
+public static <T> int compare(@libcore.util.NullFromTypeParam T a, @libcore.util.NullFromTypeParam T b, @libcore.util.NonNull java.util.Comparator<? super @libcore.util.NullFromTypeParam T> c) { throw new RuntimeException("Stub!"); }
+
+@libcore.util.NonNull public static <T> T requireNonNull(@libcore.util.Nullable T obj) { throw new RuntimeException("Stub!"); }
+
+@libcore.util.NonNull public static <T> T requireNonNull(@libcore.util.Nullable T obj, @libcore.util.NonNull java.lang.String message) { throw new RuntimeException("Stub!"); }
+
+public static boolean isNull(@libcore.util.Nullable java.lang.Object obj) { throw new RuntimeException("Stub!"); }
+
+public static boolean nonNull(@libcore.util.Nullable java.lang.Object obj) { throw new RuntimeException("Stub!"); }
+
+@libcore.util.NonNull public static <T> T requireNonNull(@libcore.util.Nullable T obj, @libcore.util.NonNull java.util.function.Supplier<@libcore.util.NonNull java.lang.String> messageSupplier) { throw new RuntimeException("Stub!"); }
+}