|  | //! Check that output slots work correctly for both initializing and non-initializing assignments. | 
|  | //! | 
|  | //! Regression test for <https://github.com/rust-lang/rust/issues/24>. | 
|  |  | 
|  | //@ run-pass | 
|  |  | 
|  | #![allow(dead_code)] | 
|  | #![allow(unused_assignments)] | 
|  | #![allow(unknown_lints)] | 
|  | #![allow(dead_assignment)] | 
|  | #![allow(unused_variables)] | 
|  |  | 
|  | struct A { | 
|  | a: isize, | 
|  | b: isize, | 
|  | } | 
|  |  | 
|  | struct Abox { | 
|  | a: Box<isize>, | 
|  | b: Box<isize>, | 
|  | } | 
|  |  | 
|  | fn ret_int_i() -> isize { | 
|  | 10 | 
|  | } | 
|  |  | 
|  | fn ret_ext_i() -> Box<isize> { | 
|  | Box::new(10) | 
|  | } | 
|  |  | 
|  | fn ret_int_rec() -> A { | 
|  | A { a: 10, b: 10 } | 
|  | } | 
|  |  | 
|  | fn ret_ext_rec() -> Box<A> { | 
|  | Box::new(A { a: 10, b: 10 }) | 
|  | } | 
|  |  | 
|  | fn ret_ext_mem() -> Abox { | 
|  | Abox { a: Box::new(10), b: Box::new(10) } | 
|  | } | 
|  |  | 
|  | fn ret_ext_ext_mem() -> Box<Abox> { | 
|  | Box::new(Abox { a: Box::new(10), b: Box::new(10) }) | 
|  | } | 
|  |  | 
|  | pub fn main() { | 
|  | let mut int_i: isize; | 
|  | let mut ext_i: Box<isize>; | 
|  | let mut int_rec: A; | 
|  | let mut ext_rec: Box<A>; | 
|  | let mut ext_mem: Abox; | 
|  | let mut ext_ext_mem: Box<Abox>; | 
|  |  | 
|  | int_i = ret_int_i(); // initializing | 
|  | int_i = ret_int_i(); // non-initializing | 
|  | int_i = ret_int_i(); // non-initializing | 
|  |  | 
|  | ext_i = ret_ext_i(); // initializing | 
|  | ext_i = ret_ext_i(); // non-initializing | 
|  | ext_i = ret_ext_i(); // non-initializing | 
|  |  | 
|  | int_rec = ret_int_rec(); // initializing | 
|  | int_rec = ret_int_rec(); // non-initializing | 
|  | int_rec = ret_int_rec(); // non-initializing | 
|  |  | 
|  | ext_rec = ret_ext_rec(); // initializing | 
|  | ext_rec = ret_ext_rec(); // non-initializing | 
|  | ext_rec = ret_ext_rec(); // non-initializing | 
|  |  | 
|  | ext_mem = ret_ext_mem(); // initializing | 
|  | ext_mem = ret_ext_mem(); // non-initializing | 
|  | ext_mem = ret_ext_mem(); // non-initializing | 
|  |  | 
|  | ext_ext_mem = ret_ext_ext_mem(); // initializing | 
|  | ext_ext_mem = ret_ext_ext_mem(); // non-initializing | 
|  | ext_ext_mem = ret_ext_ext_mem(); // non-initializing | 
|  | } |