// This test case is for issue 44: https://github.com/kelloggm/checker-framework/issues/44 import org.checkerframework.checker.index.qual.*; class ArrayCreationChecks { void test1(@Positive int x, @Positive int y) { int[] newArray = new int[x + y]; @IndexFor("newArray") int i = x; @IndexFor("newArray") int j = y; } void test2(@NonNegative int x, @Positive int y) { int[] newArray = new int[x + y]; @IndexFor("newArray") int i = x; @IndexOrHigh("newArray") int j = y; } void test3(@NonNegative int x, @NonNegative int y) { int[] newArray = new int[x + y]; @IndexOrHigh("newArray") int i = x; @IndexOrHigh("newArray") int j = y; } void test4(@GTENegativeOne int x, @NonNegative int y) { //:: error: (array.length.negative) int[] newArray = new int[x + y]; @LTEqLengthOf("newArray") int i = x; //:: error: (assignment.type.incompatible) @IndexOrHigh("newArray") int j = y; } void test5(@GTENegativeOne int x, @GTENegativeOne int y) { //:: error: (array.length.negative) int[] newArray = new int[x + y]; //:: error: (assignment.type.incompatible) @IndexOrHigh("newArray") int i = x; //:: error: (assignment.type.incompatible) @IndexOrHigh("newArray") int j = y; } void test6(int x, int y) { //:: error: (array.length.negative) int[] newArray = new int[x + y]; //:: error: (assignment.type.incompatible) @IndexFor("newArray") int i = x; //:: error: (assignment.type.incompatible) @IndexOrHigh("newArray") int j = y; } }