|  | // run-pass | 
|  |  | 
|  | fn main() { | 
|  | // test compound assignment operators with ref as right-hand side, | 
|  | // for each operator, with various types as operands. | 
|  |  | 
|  | // test AddAssign | 
|  | { | 
|  | let mut x = 3i8; | 
|  | x += &2i8; | 
|  | assert_eq!(x, 5i8); | 
|  | } | 
|  |  | 
|  | // test SubAssign | 
|  | { | 
|  | let mut x = 7i16; | 
|  | x -= &4; | 
|  | assert_eq!(x, 3i16); | 
|  | } | 
|  |  | 
|  | // test MulAssign | 
|  | { | 
|  | let mut x = 3f32; | 
|  | x *= &3f32; | 
|  | assert_eq!(x, 9f32); | 
|  | } | 
|  |  | 
|  | // test DivAssign | 
|  | { | 
|  | let mut x = 6f64; | 
|  | x /= &2f64; | 
|  | assert_eq!(x, 3f64); | 
|  | } | 
|  |  | 
|  | // test RemAssign | 
|  | { | 
|  | let mut x = 7i64; | 
|  | x %= &4i64; | 
|  | assert_eq!(x, 3i64); | 
|  | } | 
|  |  | 
|  | // test BitOrAssign | 
|  | { | 
|  | let mut x = 0b1010u8; | 
|  | x |= &0b1100u8; | 
|  | assert_eq!(x, 0b1110u8); | 
|  | } | 
|  |  | 
|  | // test BitAndAssign | 
|  | { | 
|  | let mut x = 0b1010u16; | 
|  | x &= &0b1100u16; | 
|  | assert_eq!(x, 0b1000u16); | 
|  | } | 
|  |  | 
|  | // test BitXorAssign | 
|  | { | 
|  | let mut x = 0b1010u32; | 
|  | x ^= &0b1100u32; | 
|  | assert_eq!(x, 0b0110u32); | 
|  | } | 
|  |  | 
|  | // test ShlAssign | 
|  | { | 
|  | let mut x = 0b1010u64; | 
|  | x <<= &2u32; | 
|  | assert_eq!(x, 0b101000u64); | 
|  | } | 
|  |  | 
|  | // test ShrAssign | 
|  | { | 
|  | let mut x = 0b1010u64; | 
|  | x >>= &2i16; | 
|  | assert_eq!(x, 0b10u64); | 
|  | } | 
|  | } |