import org.checkerframework.checker.index.qual.GTENegativeOne; import org.checkerframework.checker.index.qual.LowerBoundUnknown; import org.checkerframework.checker.index.qual.NonNegative; import org.checkerframework.checker.index.qual.Positive; class LBCSubtyping { void foo() { @GTENegativeOne int i = -1; @LowerBoundUnknown int j = i; int k = -4; // not this one though //:: error: (assignment.type.incompatible) @GTENegativeOne int l = k; @NonNegative int n = 0; @Positive int a = 1; // check that everything is aboveboard j = a; j = n; l = n; n = a; // error cases //:: error: (assignment.type.incompatible) @NonNegative int p = i; //:: error: (assignment.type.incompatible) @Positive int b = i; //:: error: (assignment.type.incompatible) @NonNegative int r = k; //:: error: (assignment.type.incompatible) @Positive int c = k; //:: error: (assignment.type.incompatible) @Positive int d = r; } } //a comment