1 // run-pass
2 
3 static mut DROPPED: [bool; 2] = [false, false];
4 
5 struct A(usize);
6 struct Foo { _a: A, _b: isize }
7 
8 impl Drop for A {
drop(&mut self)9     fn drop(&mut self) {
10         let A(i) = *self;
11         unsafe { DROPPED[i] = true; }
12     }
13 }
14 
main()15 fn main() {
16     {
17         Foo {
18             _a: A(0),
19             ..Foo { _a: A(1), _b: 2 }
20         };
21     }
22     unsafe {
23         assert!(DROPPED[0]);
24         assert!(DROPPED[1]);
25     }
26 }
27