import org.checkerframework.checker.nullness.qual.*;
/* Use @MonotonicNonNull as component type to ensure that null can never be
* assigned into a component. Then, after a single iteration over the array,
* we can be sure that all elements are non-null.
* TODO: support for (i=0; i < a.lenght.... and change component type to non-null.
*/
class ArrayLazyNN {
void test1() {
@MonotonicNonNull Object[] o1 = new @MonotonicNonNull Object[10];
o1[0] = new Object();
//:: error: (assignment.type.incompatible)
o1[0] = null;
//:: error: (assignment.type.incompatible)
@NonNull Object[] o2 = o1;
@SuppressWarnings("nullness")
@NonNull Object[] o3 = o1;
}
}