rust/tests/ui/offset-of/offset-of-slice-normalized.rs

38 lines
632 B
Rust
Raw Normal View History

//@ 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<T: ?Sized> 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);
}