//@ check-pass //! This UI test was introduced as check-fail by a buggy bug-fix for an ICE. In //! fact, this transmutation should be valid. #![crate_type = "lib"] #![feature(transmutability)] #![allow(dead_code)] use std::mem::size_of; mod assert { use std::mem::{Assume, TransmuteFrom}; pub fn is_maybe_transmutable() where Dst: TransmuteFrom< Src, { Assume { alignment: true, lifetimes: true, safety: true, validity: true } }, >, { } } fn test() { #[repr(C, align(2))] struct A(u8, u8); #[repr(C)] struct B(u8, u8); assert_eq!(size_of::(), size_of::()); assert::is_maybe_transmutable::(); }