// run-pass

#![feature(unsized_tuple_coercion)]

// Check that we do not change the offsets of ZST fields when unsizing

fn scalar_layout() {
    let sized: &(u8, [(); 13]) = &(123, [(); 13]);
    let unsize: &(u8, [()]) = sized;
    assert_eq!(sized.1.as_ptr(), unsize.1.as_ptr());
}

fn scalarpair_layout() {
    let sized: &(u8, u16, [(); 13]) = &(123, 456, [(); 13]);
    let unsize: &(u8, u16, [()]) = sized;
    assert_eq!(sized.2.as_ptr(), unsize.2.as_ptr());
}

pub fn main() {
    scalar_layout();
    scalarpair_layout();
}
