//@ revisions: current next //@ ignore-compare-mode-next-solver (explicit revisions) //@[next] compile-flags: -Znext-solver //@ run-pass #![feature(offset_of_slice)] use std::mem::offset_of; trait Mirror { type Assoc: ?Sized; } impl Mirror for T { type Assoc = T; } #[repr(C)] struct S { a: u8, b: (u8, u8), c: <[i32] as Mirror>::Assoc, } #[repr(C)] struct T { x: i8, y: S, } type Tup = (i16, <[i32] as Mirror>::Assoc); fn main() { assert_eq!(offset_of!(S, c), 4); assert_eq!(offset_of!(T, y), 4); assert_eq!(offset_of!(T, y.c), 8); assert_eq!(offset_of!(Tup, 1), 4); }