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
25 fn drop(&mut self) { }
28 fn cannot_partially_init_adt_with_drop() {
31 //~^ ERROR assign of possibly uninitialized variable: `d` [E0381]
34 fn cannot_partially_init_mutable_adt_with_drop() {
37 //~^ ERROR assign of possibly uninitialized variable: `d` [E0381]
40 fn cannot_partially_reinit_adt_with_drop() {
41 let mut d = D { x: 0, s: S{ y: 0, z: 0 } };
44 //~^ ERROR assign of moved value: `d` [E0382]
47 fn cannot_partially_init_inner_adt_via_outer_with_drop() {
50 //~^ ERROR assign to part of possibly uninitialized variable: `d` [E0381]
53 fn cannot_partially_init_inner_adt_via_mutable_outer_with_drop() {
56 //~^ ERROR assign to part of possibly uninitialized variable: `d` [E0381]
59 fn cannot_partially_reinit_inner_adt_via_outer_with_drop() {
60 let mut d = D { x: 0, s: S{ y: 0, z: 0} };
63 //~^ ERROR assign to part of moved value: `d` [E0382]