blob: 7ed315a3163fe5ea999abb4121a6c46b79572fbe [file] [log] [blame]
import org.checkerframework.checker.index.qual.*;
public class Polymorphic3 {
// Identity functions
@PolyIndex int identity(@PolyIndex int a) {
return a;
}
// UpperBound tests
void ubc_id(
int[] a,
int[] b,
@LTLengthOf("#1") int ai,
@LTEqLengthOf("#1") int al,
@LTLengthOf({"#1", "#2"}) int abi,
@LTEqLengthOf({"#1", "#2"}) int abl) {
int[] c;
@LTLengthOf("a") int ai1 = identity(ai);
// :: error: (assignment)
@LTLengthOf("b") int ai2 = identity(ai);
@LTEqLengthOf("a") int al1 = identity(al);
// :: error: (assignment)
@LTLengthOf("a") int al2 = identity(al);
@LTLengthOf({"a", "b"}) int abi1 = identity(abi);
// :: error: (assignment)
@LTLengthOf({"a", "b", "c"}) int abi2 = identity(abi);
@LTEqLengthOf({"a", "b"}) int abl1 = identity(abl);
// :: error: (assignment)
@LTEqLengthOf({"a", "b", "c"}) int abl2 = identity(abl);
}
// LowerBound tests
void lbc_id(@NonNegative int n, @Positive int p, @GTENegativeOne int g) {
@NonNegative int an = identity(n);
// :: error: (assignment)
@Positive int bn = identity(n);
@GTENegativeOne int ag = identity(g);
// :: error: (assignment)
@NonNegative int bg = identity(g);
@Positive int ap = identity(p);
}
}