summaryrefslogtreecommitdiffstats
path: root/tests/ui/layout/issue-112048-unsizing-niche.rs
blob: 23588ba36ee59cf03113a30377c1ca1881723883 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// run-pass

// Check that unsizing does not change which field is considered for niche layout.

#![feature(offset_of)]
#![allow(dead_code)]

#[derive(Clone)]
struct WideptrField<T: ?Sized> {
    first: usize,
    second: usize,
    niche: NicheAtEnd,
    tail: T,
}

#[derive(Clone)]
#[repr(C)]
struct NicheAtEnd {
    arr: [u8; 7],
    b: bool,
}

type Tail = [bool; 8];

fn main() {
    assert_eq!(
        core::mem::offset_of!(WideptrField<Tail>, niche),
        core::mem::offset_of!(WideptrField<dyn Send>, niche)
    );
}