| //! Regression test for [Using the result of an assignment expression results in an LLVM assert |
| //! #483][issue-483]. This test checks that assignment expressions produce a unit type, and is |
| //! properly lowered to LLVM IR such that it does not trigger an LLVM assertion. This test was added |
| //! *really* early, back in 2011. |
| //! |
| //! [issue-483]: https://github.com/rust-lang/rust/issues/483 |
| |
| //@ run-pass |
| |
| fn test_assign() { |
| let mut x: isize; |
| let y: () = x = 10; |
| assert_eq!(x, 10); |
| assert_eq!(y, ()); |
| let mut z: () = x = 11; |
| assert_eq!(x, 11); |
| assert_eq!(z, ()); |
| z = x = 12; |
| assert_eq!(x, 12); |
| assert_eq!(z, ()); |
| } |
| |
| fn test_assign_op() { |
| let mut x: isize = 0; |
| let y: () = x += 10; |
| assert_eq!(x, 10); |
| assert_eq!(y, ()); |
| let mut z: () = x += 11; |
| assert_eq!(x, 21); |
| assert_eq!(z, ()); |
| z = x += 12; |
| assert_eq!(x, 33); |
| assert_eq!(z, ()); |
| } |
| |
| pub fn main() { |
| test_assign(); |
| test_assign_op(); |
| } |