rust/tests/ui/layout/issue-112048-unsizing-niche.rs
2023-06-13 15:32:42 -04:00

31 lines
530 B
Rust

// 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)
);
}