mirror of https://github.com/rust-lang/rust.git
42 lines
757 B
Rust
42 lines
757 B
Rust
//@ 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
|
|
}
|