| //@ run-pass | |
| // Check that unsizing doesn't reorder fields. | |
| #![allow(dead_code)] | |
| use std::fmt::Debug; | |
| #[derive(Debug)] | |
| struct GcNode<T: ?Sized> { | |
| gets_swapped_with_next: usize, | |
| next: Option<&'static GcNode<dyn Debug>>, | |
| tail: T, | |
| } | |
| fn main() { | |
| let node: Box<GcNode<dyn Debug>> = Box::new(GcNode { | |
| gets_swapped_with_next: 42, | |
| next: None, | |
| tail: Box::new(1), | |
| }); | |
| assert_eq!(node.gets_swapped_with_next, 42); | |
| assert!(node.next.is_none()); | |
| } |