Null annotations for java.util.List
Test: make docs
Bug: 64930165
Change-Id: If1be70ccfc5dc511b6571512ede1d34b3250c1c9
diff --git a/annotated_java_files.bp b/annotated_java_files.bp
index d4aa37d..03940f9 100644
--- a/annotated_java_files.bp
+++ b/annotated_java_files.bp
@@ -24,5 +24,6 @@
"ojluni/src/main/java/java/lang/reflect/Type.java",
"ojluni/src/main/java/java/lang/reflect/TypeVariable.java",
"ojluni/src/main/java/java/lang/reflect/WildcardType.java",
+ "ojluni/src/main/java/java/util/List.java",
],
}
diff --git a/annotations/ojluni.jaif b/annotations/ojluni.jaif
index a4b7996..1c932cf 100644
--- a/annotations/ojluni.jaif
+++ b/annotations/ojluni.jaif
@@ -27,6 +27,11 @@
// type: @libcore.util.NonNull
// inner-type 0, 0: @libcore.util.Nullable
+// There are some comment shortcuts used below for brevity:
+//
+// CLASS_TYPE_PARAMETER(X)
+// - used when nullability is deliberately left floating; the nullability is the same as the
+// type parameter X of the class.
package libcore.util:
annotation @NonNull: @java.lang.annotation.Retention(value=SOURCE) @java.lang.annotation.Target(value={TYPE_USE})
@@ -598,9 +603,111 @@
class WildcardType:
// Empty array in the worst case
method getUpperBounds()[Ljava/lang/reflect/Type;:
- return: @libcore.util.NonNull
+ return: @libcore.util.NonNull
inner-type 0, 0: @libcore.util.NonNull
// Empty array in the worst case
method getLowerBounds()[Ljava/lang/reflect/Type;:
return: @libcore.util.NonNull
inner-type 0, 0: @libcore.util.NonNull
+
+package java.util:
+
+class List:
+ method contains(Ljava/lang/Object;)Z:
+ // May be null
+ parameter #0:
+ type: @libcore.util.Nullable
+ return:
+ method iterator()Ljava/util/Iterator;:
+ // Javadoc doesn't mention possiblity of a null result
+ return: @libcore.util.NonNull
+ method toArray()[Ljava/lang/Object;:
+ // Never returns null
+ return: @libcore.util.NonNull
+ method toArray([Ljava/lang/Object;)[Ljava/lang/Object;:
+ // Javadoc mention NPE for param #0
+ parameter #0:
+ type: @libcore.util.NonNull
+ // Never returns null
+ return: @libcore.util.NonNull
+ // boolean add(E e); CLASS_TYPE_PARAMETER(E)
+ method add(Ljava/lang/Object;)Z:
+ return:
+ method remove(Ljava/lang/Object;)Z:
+ // param #0 has to allow nulls
+ parameter #0:
+ type: @libcore.util.Nullable
+ return:
+ method containsAll(Ljava/util/Collection;)Z:
+ // Javadoc mention NPE for null param #0
+ parameter #0:
+ type: @libcore.util.NonNull
+ inner-type 3, 0: @libcore.util.Nullable
+ return:
+ method addAll(Ljava/util/Collection;)Z:
+ // Javadoc mention NPE for null param #0
+ parameter #0:
+ type: @libcore.util.NonNull
+ // boolean addAll(Collection<? extends E> c); CLASS_TYPE_PARAMETER(E)
+ inner-type 3, 0:
+ return:
+ method addAll(ILjava/util/Collection;)Z:
+ // Javadoc mention NPE for null param #1
+ parameter #1:
+ type: @libcore.util.NonNull
+ // boolean addAll(Collection<? extends E> c); CLASS_TYPE_PARAMETER(E)
+ inner-type 3, 0:
+ return:
+ method removeAll(Ljava/util/Collection;)Z:
+ // Javadoc mention NPE for null param #0
+ parameter #0:
+ type: @libcore.util.NonNull
+ method retainAll(Ljava/util/Collection;)Z:
+ // Javadoc mention NPE for null param #0
+ parameter #0:
+ type: @libcore.util.NonNull
+ method replaceAll(Ljava/util/function/UnaryOperator;)V:
+ // Javadoc mention NPE for null param #0
+ parameter #0:
+ type: @libcore.util.NonNull
+ method sort(Ljava/util/Comparator;)V:
+ // Javadoc mention null as valid param #0
+ parameter #0:
+ type: @libcore.util.Nullable
+ method equals(Ljava/lang/Object;)Z:
+ // Null is valid argument #0
+ parameter #0:
+ type: @libcore.util.Nullable
+ method get(I)Ljava/lang/Object;:
+ // E get(int index); CLASS_TYPE_PARAMETER(E)
+ return:
+ // E set(int index, E element); CLASS_TYPE_PARAMETER(E)
+ method set(ILjava/lang/Object;)Ljava/lang/Object;:
+ return:
+ method add(ILjava/lang/Object;)V:
+ // void add(int index, E element); CLASS_TYPE_PARAMETER(E)
+ parameter #1:
+ return:
+ method remove(I)Ljava/lang/Object;:
+ // E remove(int index); CLASS_TYPE_PARAMETER(E)
+ return:
+ method indexOf(Ljava/lang/Object;)I:
+ // Null is valid argument
+ parameter #0:
+ type: @libcore.util.Nullable
+ method lastIndexOf(Ljava/lang/Object;)I:
+ // Null is valid argument
+ parameter #0:
+ type: @libcore.util.Nullable
+ method listIterator()Ljava/util/ListIterator;:
+ // Javadoc doesn't mention possiblity of a null result
+ return: @libcore.util.NonNull
+ method listIterator(I)Ljava/util/ListIterator;:
+ // Javadoc doesn't mention possiblity of a null result
+ return: @libcore.util.NonNull
+ method subList(II)Ljava/util/List;:
+ // Javadoc doesn't mention possiblity of a null result
+ return: @libcore.util.NonNull
+ method spliterator()Ljava/util/Spliterator;:
+ // Javadoc doesn't mention possiblity of a null result
+ return: @libcore.util.NonNull