rust/tests/ui/dynamically-sized-types/dst-tuple-no-reorder.rs

27 lines
585 B
Rust

//@ run-pass
#![feature(unsized_tuple_coercion)]
// Ensure that unsizable fields that might be accessed don't get reordered
fn nonzero_size() {
let sized: (u8, [u32; 2]) = (123, [456, 789]);
let unsize: &(u8, [u32]) = &sized;
assert_eq!(unsize.0, 123);
assert_eq!(unsize.1.len(), 2);
assert_eq!(unsize.1[0], 456);
assert_eq!(unsize.1[1], 789);
}
fn zst() {
let sized: (u8, [u32; 0]) = (123, []);
let unsize: &(u8, [u32]) = &sized;
assert_eq!(unsize.0, 123);
assert_eq!(unsize.1.len(), 0);
}
pub fn main() {
nonzero_size();
zst();
}