blob: 8ff92c21ec1ae80120412b58ea5ef224cc29b337 [file] [log] [blame]
import org.checkerframework.checker.signedness.qual.*;
public class CompoundAssignmentsSignedness {
public void DivModTest(
@Unsigned int unsigned,
@PolySigned int polysigned,
@UnknownSignedness int unknown,
@SignednessGlb int constant) {
// :: error: (compound.assignment.unsigned.expression)
unknown /= unsigned;
// :: error: (compound.assignment.unsigned.variable)
// :: error: (compound.assignment)
unsigned /= unknown;
// :: error: (compound.assignment.unsigned.variable)
unsigned /= constant;
// :: error: (compound.assignment.unsigned.expression)
// :: error: (compound.assignment)
constant /= unsigned;
// :: error: (compound.assignment.unsigned.expression)
unknown /= polysigned;
// :: error: (compound.assignment.unsigned.variable)
// :: error: (compound.assignment)
polysigned /= unknown;
// :: error: (compound.assignment.unsigned.variable)
// :: error: (compound.assignment)
polysigned /= constant;
// :: error: (compound.assignment.unsigned.expression)
// :: error: (compound.assignment)
constant /= polysigned;
// :: error: (compound.assignment.unsigned.expression)
unknown %= unsigned;
// :: error: (compound.assignment.unsigned.variable)
// :: error: (compound.assignment)
unsigned %= unknown;
// :: error: (compound.assignment.unsigned.expression)
unknown %= polysigned;
// :: error: (compound.assignment.unsigned.variable)
// :: error: (compound.assignment)
polysigned %= unknown;
// :: error: (compound.assignment.unsigned.variable)
unsigned %= constant;
// :: error: (compound.assignment.unsigned.expression)
// :: error: (compound.assignment)
constant %= unsigned;
// :: error: (compound.assignment.unsigned.variable)
// :: error: (compound.assignment)
polysigned %= constant;
// :: error: (compound.assignment.unsigned.expression)
// :: error: (compound.assignment)
constant %= polysigned;
}
public void SignedRightShiftTest(
@Unsigned int unsigned,
@PolySigned int polysigned,
@UnknownSignedness int unknown,
@SignednessGlb int constant) {
// :: error: (compound.assignment.shift.signed)
unsigned >>= constant;
constant >>= unsigned;
// :: error: (compound.assignment.shift.signed)
polysigned >>= constant;
constant >>= polysigned;
// :: error: (compound.assignment.shift.signed)
unsigned >>= unknown;
unknown >>= unsigned;
// :: error: (compound.assignment.shift.signed)
polysigned >>= unknown;
unknown >>= polysigned;
}
public void UnsignedRightShiftTest(
@Signed int signed,
@PolySigned int polysigned,
@UnknownSignedness int unknown,
@SignednessGlb int constant) {
// :: error: (compound.assignment.shift.unsigned)
signed >>>= constant;
constant >>>= signed;
// :: error: (compound.assignment.shift.unsigned)
signed >>>= unknown;
unknown >>>= signed;
// :: error: (compound.assignment.shift.unsigned)
polysigned >>>= constant;
constant >>>= polysigned;
// :: error: (compound.assignment.shift.unsigned)
polysigned >>>= unknown;
unknown >>>= polysigned;
}
public void LeftShiftTest(
@Signed int signed,
@Unsigned int unsigned,
@PolySigned int polysigned,
@UnknownSignedness int unknown,
@SignednessGlb int constant) {
signed <<= constant;
constant <<= signed;
signed <<= unknown;
unknown <<= signed;
unsigned <<= constant;
constant <<= unsigned;
unsigned <<= unknown;
unknown <<= unsigned;
polysigned <<= constant;
constant <<= polysigned;
polysigned <<= unknown;
unknown <<= polysigned;
}
public void mixedTest(@Unsigned int unsigned, @Signed int signed) {
// :: error: (compound.assignment.mixed.unsigned.variable)
// :: error: (compound.assignment)
unsigned += signed;
// :: error: (compound.assignment.mixed.unsigned.expression)
// :: error: (compound.assignment)
signed += unsigned;
}
}