//@ check-pass #![crate_type = "lib"] #![feature(repr128)] #![feature(transmutability)] #![allow(dead_code, incomplete_features, non_camel_case_types)] mod assert { use std::mem::{Assume, TransmuteFrom}; pub fn is_maybe_transmutable() where Dst: TransmuteFrom {} } fn should_accept_repr_rust() { fn singleton() { enum repr_rust { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn duplex() { enum repr_rust { A, B } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } } fn should_accept_primitive_reprs() { fn should_accept_repr_i8() { #[repr(i8)] enum repr_i8 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_u8() { #[repr(u8)] enum repr_u8 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_i16() { #[repr(i16)] enum repr_i16 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_u16() { #[repr(u16)] enum repr_u16 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_i32() { #[repr(i32)] enum repr_i32 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_u32() { #[repr(u32)] enum repr_u32 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_i64() { #[repr(i64)] enum repr_i64 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_u64() { #[repr(u64)] enum repr_u64 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_i128() { #[repr(i128)] enum repr_i128 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_u128() { #[repr(u128)] enum repr_u128 { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_isize() { #[repr(isize)] enum repr_isize { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } fn should_accept_repr_usize() { #[repr(usize)] enum repr_usize { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); } } fn should_accept_repr_c() { #[repr(C)] enum repr_c { V } assert::is_maybe_transmutable::(); assert::is_maybe_transmutable::(); }