]>
git.proxmox.com Git - rustc.git/blob - src/test/ui/consts/const-int-arithmetic-overflow.rs
4 // Make sure arithmetic unary/binary ops actually return the right result, even when overflowing.
5 // We have to put them in `const fn` and turn on optimizations to avoid overflow checks.
7 const fn add(x
: i8, y
: i8) -> i8 { x+y }
8 const fn sub(x
: i8, y
: i8) -> i8 { x-y }
9 const fn mul(x
: i8, y
: i8) -> i8 { x*y }
10 // div and rem are always checked, so we cannot test their result in case of overflow.
11 const fn neg(x
: i8) -> i8 { -x }
14 const ADD_OFLOW
: i8 = add(100, 100);
15 assert_eq
!(ADD_OFLOW
, -56);
17 const SUB_OFLOW
: i8 = sub(100, -100);
18 assert_eq
!(SUB_OFLOW
, -56);
20 const MUL_OFLOW
: i8 = mul(-100, -2);
21 assert_eq
!(MUL_OFLOW
, -56);
23 const NEG_OFLOW
: i8 = neg(-128);
24 assert_eq
!(NEG_OFLOW
, -128);