| //! 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(); | |
| } |