summaryrefslogtreecommitdiffstats
path: root/src/test/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs
blob: b0cefe77039d6aae8c5165a85f65639be8d25a5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 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();
}