| //@ compile-flags: --crate-type=lib |
| |
| #![feature(unsafe_fields)] |
| #![allow(incomplete_features)] |
| #![deny(missing_copy_implementations)] |
| |
| mod good_safe_impl { |
| enum SafeEnum { |
| Safe(u8), |
| } |
| |
| impl Copy for SafeEnum {} |
| } |
| |
| mod bad_safe_impl { |
| enum UnsafeEnum { |
| Safe(u8), |
| Unsafe { unsafe field: u8 }, |
| } |
| |
| impl Copy for UnsafeEnum {} |
| //~^ ERROR the trait `Copy` requires an `unsafe impl` declaration |
| } |
| |
| mod good_unsafe_impl { |
| enum UnsafeEnum { |
| Safe(u8), |
| Unsafe { unsafe field: u8 }, |
| } |
| |
| unsafe impl Copy for UnsafeEnum {} |
| } |
| |
| mod bad_unsafe_impl { |
| enum SafeEnum { |
| Safe(u8), |
| } |
| |
| unsafe impl Copy for SafeEnum {} |
| //~^ ERROR implementing the trait `Copy` is not unsafe |
| } |