blob: ede42e05e6d7324a3755d6b704af89cc02a8a758 [file] [log] [blame]
import org.checkerframework.checker.index.qual.NonNegative;
import org.checkerframework.checker.index.qual.Positive;
import org.checkerframework.checker.signedness.qual.Signed;
import org.checkerframework.checker.signedness.qual.SignedPositive;
import org.checkerframework.checker.signedness.qual.SignednessGlb;
import org.checkerframework.common.value.qual.IntRange;
import org.checkerframework.common.value.qual.IntVal;
public class ValueIntegration {
public void ByteValRules(
@IntVal({0, 127}) byte c,
@IntVal({128, 255}) byte upure,
@IntVal({0, 128}) byte umixed, // 128 is another way to write -128
@IntVal({-128, -1}) byte spure,
@IntVal({-1, 127}) byte smixed,
@IntVal({-128, 0, 128}) byte bmixed) {
@Signed byte stest;
@SignednessGlb byte gtest;
@SignedPositive byte ptest;
stest = c;
gtest = c;
ptest = c;
stest = upure;
// :: error: (assignment)
gtest = upure;
// :: error: (assignment)
ptest = upure;
stest = umixed;
// :: error: (assignment)
gtest = umixed;
// :: error: (assignment)
ptest = umixed;
stest = spure;
// :: error: (assignment)
gtest = spure;
// :: error: (assignment)
ptest = spure;
stest = smixed;
// :: error: (assignment)
gtest = smixed;
// :: error: (assignment)
ptest = smixed;
stest = bmixed;
// :: error: (assignment)
gtest = bmixed;
// :: error: (assignment)
ptest = bmixed;
}
// Character and char are always @Unsigned, never @Signed.
/*
public void CharValRules(
@IntVal({0, 127}) char c,
@IntVal({128, 255}) char upure,
@IntVal({0, 128}) char umixed,
@IntVal({-128, -1}) char spure,
@IntVal({-1, 127}) char smixed,
@IntVal({-128, 0, 128}) char bmixed) {
@Signed char stest;
@SignednessGlb char gtest;
@SignedPositive char ptest;
stest = c;
gtest = c;
ptest = c;
stest = upure;
// XX error: (assignment)
gtest = upure;
// XX error: (assignment)
ptest = upure;
stest = umixed;
// XX error: (assignment)
gtest = umixed;
// XX error: (assignment)
ptest = umixed;
stest = spure;
// XX error: (assignment)
gtest = spure;
// XX error: (assignment)
ptest = spure;
stest = smixed;
// XX error: (assignment)
gtest = smixed;
// XX error: (assignment)
ptest = smixed;
stest = bmixed;
// XX error: (assignment)
gtest = bmixed;
// XX error: (assignment)
ptest = bmixed;
}
*/
public void ShortValRules(
@IntVal({0, 32767}) short c,
@IntVal({32768, 65535}) short upure,
@IntVal({0, 32768}) short umixed,
@IntVal({-32768, -1}) short spure,
@IntVal({-1, 32767}) short smixed,
@IntVal({-32768, 0, 32768}) short bmixed) {
@Signed short stest;
@SignednessGlb short gtest;
@SignedPositive short ptest;
stest = c;
gtest = c;
ptest = c;
stest = upure;
// :: error: (assignment)
gtest = upure;
// :: error: (assignment)
ptest = upure;
stest = umixed;
// :: error: (assignment)
gtest = umixed;
// :: error: (assignment)
ptest = umixed;
stest = spure;
// :: error: (assignment)
gtest = spure;
// :: error: (assignment)
ptest = spure;
stest = smixed;
// :: error: (assignment)
gtest = smixed;
// :: error: (assignment)
ptest = smixed;
stest = bmixed;
// :: error: (assignment)
gtest = bmixed;
// :: error: (assignment)
ptest = bmixed;
}
public void IntValRules(
@IntVal({0, 2147483647}) int c,
@IntVal({2147483648L, 4294967295L}) int upure,
@IntVal({0, 2147483648L}) int umixed,
@IntVal({-2147483648, -1}) int spure,
@IntVal({-1, 2147483647}) int smixed,
@IntVal({-2147483648, 0, 2147483648L}) int bmixed) {
@Signed int stest;
@SignednessGlb int gtest;
@SignedPositive int ptest;
stest = c;
gtest = c;
ptest = c;
stest = upure;
// :: error: (assignment)
gtest = upure;
// :: error: (assignment)
ptest = upure;
stest = umixed;
// :: error: (assignment)
gtest = umixed;
// :: error: (assignment)
ptest = umixed;
stest = spure;
// :: error: (assignment)
gtest = spure;
// :: error: (assignment)
ptest = spure;
stest = smixed;
// :: error: (assignment)
gtest = smixed;
// :: error: (assignment)
ptest = smixed;
stest = bmixed;
// :: error: (assignment)
gtest = bmixed;
// :: error: (assignment)
ptest = bmixed;
}
public void LongValRules(
@IntVal({0, Long.MAX_VALUE}) long c,
@IntVal({Long.MIN_VALUE, -1}) long spure,
@IntVal({-1, Long.MAX_VALUE}) long smixed,
@IntVal({Long.MIN_VALUE, 0, Long.MAX_VALUE}) long bmixed) {
@Signed long stest;
@SignednessGlb long gtest;
@SignedPositive long ptest;
stest = c;
gtest = c;
ptest = c;
stest = spure;
// :: error: (assignment)
gtest = spure;
// :: error: (assignment)
ptest = spure;
stest = smixed;
// :: error: (assignment)
gtest = smixed;
// :: error: (assignment)
ptest = smixed;
stest = bmixed;
// :: error: (assignment)
gtest = bmixed;
// :: error: (assignment)
ptest = bmixed;
}
public void ByteRangeRules(
@IntRange(from = 0, to = 127) byte c,
@NonNegative byte nnc,
@Positive byte pc,
@IntRange(from = 128, to = 255) byte upure,
@IntRange(from = 0, to = 128) byte umixed,
@IntRange(from = -128, to = -1) byte spure,
@IntRange(from = -1, to = 127) byte smixed,
@IntRange(from = -128, to = 128) byte bmixed) {
@Signed byte stest;
@SignednessGlb byte gtest;
@SignedPositive byte ptest;
stest = c;
gtest = c;
ptest = c;
stest = nnc;
gtest = nnc;
ptest = nnc;
stest = pc;
gtest = pc;
ptest = pc;
stest = upure;
// :: error: (assignment)
gtest = upure;
// :: error: (assignment)
ptest = upure;
stest = umixed;
// :: error: (assignment)
gtest = umixed;
// :: error: (assignment)
ptest = umixed;
stest = spure;
// :: error: (assignment)
gtest = spure;
// :: error: (assignment)
ptest = spure;
stest = smixed;
// :: error: (assignment)
gtest = smixed;
// :: error: (assignment)
ptest = smixed;
stest = bmixed;
// :: error: (assignment)
gtest = bmixed;
// :: error: (assignment)
ptest = bmixed;
}
// Character and char are always @Unsigned, never @Signed.
/*
public void CharRangeRules(
@IntRange(from = 0, to = 127) char c,
@NonNegative char nnc,
@Positive char pc,
@IntRange(from = 128, to = 255) char upure,
@IntRange(from = 0, to = 128) char umixed,
@IntRange(from = -128, to = -1) char spure,
@IntRange(from = -1, to = 127) char smixed,
@IntRange(from = -128, to = 128) char bmixed) {
@Signed char stest;
@SignednessGlb char gtest;
@SignedPositive char ptest;
stest = c;
gtest = c;
ptest = c;
stest = nnc;
gtest = nnc;
ptest = nnc;
stest = pc;
gtest = pc;
ptest = pc;
stest = upure;
// XX error: (assignment)
gtest = upure;
// XX error: (assignment)
ptest = upure;
stest = umixed;
// XX error: (assignment)
gtest = umixed;
// XX error: (assignment)
ptest = umixed;
stest = spure;
// XX error: (assignment)
gtest = spure;
// XX error: (assignment)
ptest = spure;
stest = smixed;
// XX error: (assignment)
gtest = smixed;
// XX error: (assignment)
ptest = smixed;
stest = bmixed;
// XX error: (assignment)
gtest = bmixed;
// XX error: (assignment)
ptest = bmixed;
}
*/
public void ShortRangeRules(
@IntRange(from = 0, to = 32767) short c,
@NonNegative short nnc,
@Positive short pc,
@IntRange(from = 32768, to = 65535) short upure,
@IntRange(from = 0, to = 32768) short umixed,
@IntRange(from = -32768, to = -1) short spure,
@IntRange(from = -1, to = 32767) short smixed,
@IntRange(from = -32768, to = 32768) short bmixed) {
@Signed short stest;
@SignednessGlb short gtest;
@SignedPositive short ptest;
stest = c;
gtest = c;
ptest = c;
stest = nnc;
gtest = nnc;
ptest = nnc;
stest = pc;
gtest = pc;
ptest = pc;
stest = upure;
// :: error: (assignment)
gtest = upure;
// :: error: (assignment)
ptest = upure;
stest = umixed;
// :: error: (assignment)
gtest = umixed;
// :: error: (assignment)
ptest = umixed;
stest = spure;
// :: error: (assignment)
gtest = spure;
// :: error: (assignment)
ptest = spure;
stest = smixed;
// :: error: (assignment)
gtest = smixed;
// :: error: (assignment)
ptest = smixed;
stest = bmixed;
// :: error: (assignment)
gtest = bmixed;
// :: error: (assignment)
ptest = bmixed;
}
public void IntRangeRules(
@IntRange(from = 0, to = 2147483647) int c,
@NonNegative int nnc,
@Positive int pc,
@IntRange(from = 2147483648L, to = 4294967295L) int upure,
@IntRange(from = 0, to = 2147483648L) int umixed,
@IntRange(from = -2147483648, to = -1) int spure,
@IntRange(from = -1, to = 2147483647) int smixed,
@IntRange(from = -2147483648, to = 2147483648L) int bmixed) {
@Signed int stest;
@SignednessGlb int gtest;
@SignedPositive int ptest;
stest = c;
gtest = c;
ptest = c;
stest = nnc;
gtest = nnc;
ptest = nnc;
stest = pc;
gtest = pc;
ptest = pc;
stest = upure;
// :: error: (assignment)
gtest = upure;
// :: error: (assignment)
ptest = upure;
stest = umixed;
// :: error: (assignment)
gtest = umixed;
// :: error: (assignment)
ptest = umixed;
stest = spure;
// :: error: (assignment)
gtest = spure;
// :: error: (assignment)
ptest = spure;
stest = smixed;
// :: error: (assignment)
gtest = smixed;
// :: error: (assignment)
ptest = smixed;
stest = bmixed;
// :: error: (assignment)
gtest = bmixed;
// :: error: (assignment)
ptest = bmixed;
}
public void LongRangeRules(
@IntRange(from = 0, to = Long.MAX_VALUE) long c,
@NonNegative long nnc,
@Positive long pc,
@IntRange(from = Long.MIN_VALUE, to = -1) long spure,
@IntRange(from = -1, to = Long.MAX_VALUE) long smixed,
@IntRange(from = Long.MIN_VALUE, to = Long.MAX_VALUE) long bmixed) {
@Signed long stest;
@SignednessGlb long gtest;
@SignedPositive long ptest;
stest = c;
gtest = c;
ptest = c;
stest = nnc;
gtest = nnc;
ptest = nnc;
stest = pc;
gtest = pc;
ptest = pc;
stest = spure;
// :: error: (assignment)
gtest = spure;
// :: error: (assignment)
ptest = spure;
stest = smixed;
// :: error: (assignment)
gtest = smixed;
// :: error: (assignment)
ptest = smixed;
stest = bmixed;
// :: error: (assignment)
gtest = bmixed;
// :: error: (assignment)
ptest = bmixed;
}
}