import foo.*; import java.util.List; class TestCompilerWarnings { public void m(@NotNull Object x) { assert x != null; } public void test1Array(@Nullable String @NotNull [] x) { if (x == null) { System.out.println("x is null"); } m(x); m(x[0]); } public void test2Array(@NotNull String @Nullable [] x) { if (x == null) { System.out.println("x is null"); } else { m(x[0]); } m(x); } void testIteration() { @NotNull String @NotNull [] array = new String[] { "1", "2", "3" }; for (int i = 0; i < array.length; i++) { if (array[i] == null) { System.out.println("unreachable"); } } for (String anArray : array) { if (anArray == null) { System.out.println("unreachable"); } } } void multidim(@Nullable String @NotNull[] @NotNull[] a1, @NotNull String @NotNull[] @Nullable[] a2, @NotNull String @Nullable [] @NotNull[] a3) { System.out.println(a1[0][0].length()); System.out.println(a2[0][0].length()); System.out.println(a3[0][0].length()); } void multidimParam(@Nullable String @NotNull[] @NotNull[] a1, @NotNull String @NotNull[] @Nullable[] a2, @NotNull String @Nullable [] @NotNull[] a3, int i) { System.out.println(a1[i][i].length()); // Should warn here as well but not supported yet System.out.println(a2[i][i].length()); System.out.println(a3[i][i].length()); } }