1 // run-pass
2
main()3 fn main() {
4 // test compound assignment operators with ref as right-hand side,
5 // for each operator, with various types as operands.
6
7 // test AddAssign
8 {
9 let mut x = 3i8;
10 x += &2i8;
11 assert_eq!(x, 5i8);
12 }
13
14 // test SubAssign
15 {
16 let mut x = 7i16;
17 x -= &4;
18 assert_eq!(x, 3i16);
19 }
20
21 // test MulAssign
22 {
23 let mut x = 3f32;
24 x *= &3f32;
25 assert_eq!(x, 9f32);
26 }
27
28 // test DivAssign
29 {
30 let mut x = 6f64;
31 x /= &2f64;
32 assert_eq!(x, 3f64);
33 }
34
35 // test RemAssign
36 {
37 let mut x = 7i64;
38 x %= &4i64;
39 assert_eq!(x, 3i64);
40 }
41
42 // test BitOrAssign
43 {
44 let mut x = 0b1010u8;
45 x |= &0b1100u8;
46 assert_eq!(x, 0b1110u8);
47 }
48
49 // test BitAndAssign
50 {
51 let mut x = 0b1010u16;
52 x &= &0b1100u16;
53 assert_eq!(x, 0b1000u16);
54 }
55
56 // test BitXorAssign
57 {
58 let mut x = 0b1010u32;
59 x ^= &0b1100u32;
60 assert_eq!(x, 0b0110u32);
61 }
62
63 // test ShlAssign
64 {
65 let mut x = 0b1010u64;
66 x <<= &2u32;
67 assert_eq!(x, 0b101000u64);
68 }
69
70 // test ShrAssign
71 {
72 let mut x = 0b1010u64;
73 x >>= &2i16;
74 assert_eq!(x, 0b10u64);
75 }
76 }
77