1 // This test enumerates various cases of interest where a ADT or tuple is
2 // partially initialized and then used in some way that is wrong *even*
3 // after rust-lang/rust#54987 is implemented.
5 // See rust-lang/rust#21232, rust-lang/rust#54986, and rust-lang/rust#54987.
7 // See issue-21232-partial-init-and-use.rs for cases of tests that are
8 // meant to compile and run successfully once rust-lang/rust#54987 is
23 fn drop(&mut self) { }
26 fn cannot_partially_init_adt_with_drop() {
29 //~^ ERROR assign of possibly uninitialized variable: `d` [E0381]
32 fn cannot_partially_init_mutable_adt_with_drop() {
35 //~^ ERROR assign of possibly uninitialized variable: `d` [E0381]
38 fn cannot_partially_reinit_adt_with_drop() {
39 let mut d = D { x: 0, s: S{ y: 0, z: 0 } };
42 //~^ ERROR assign of moved value: `d` [E0382]
45 fn cannot_partially_init_inner_adt_via_outer_with_drop() {
48 //~^ ERROR assign to part of possibly uninitialized variable: `d` [E0381]
51 fn cannot_partially_init_inner_adt_via_mutable_outer_with_drop() {
54 //~^ ERROR assign to part of possibly uninitialized variable: `d` [E0381]
57 fn cannot_partially_reinit_inner_adt_via_outer_with_drop() {
58 let mut d = D { x: 0, s: S{ y: 0, z: 0} };
61 //~^ ERROR assign to part of moved value: `d` [E0382]