| //! Make sure that `derive(Clone)` works for simple structs and enums. | |
| //@ run-pass | |
| #![allow(dead_code)] | |
| #[derive(Clone)] | |
| enum SimpleEnum { | |
| A, | |
| B(()), | |
| C, | |
| } | |
| #[derive(Clone)] | |
| enum GenericEnum<T, U> { | |
| A(T), | |
| B(T, U), | |
| C, | |
| } | |
| #[derive(Clone)] | |
| struct TupleStruct((), ()); | |
| #[derive(Clone)] | |
| struct GenericStruct<T> { | |
| foo: (), | |
| bar: (), | |
| baz: T, | |
| } | |
| #[derive(Clone)] | |
| struct GenericTupleStruct<T>(T, ()); | |
| #[derive(Clone)] | |
| struct ManyPrimitives { | |
| _int: isize, | |
| _i8: i8, | |
| _i16: i16, | |
| _i32: i32, | |
| _i64: i64, | |
| _uint: usize, | |
| _u8: u8, | |
| _u16: u16, | |
| _u32: u32, | |
| _u64: u64, | |
| _f32: f32, | |
| _f64: f64, | |
| _bool: bool, | |
| _char: char, | |
| _nil: (), | |
| } | |
| // Regression test for issue #30244 | |
| #[derive(Copy, Clone)] | |
| struct Array { | |
| arr: [[u8; 256]; 4], | |
| } | |
| pub fn main() { | |
| let _ = SimpleEnum::A.clone(); | |
| let _ = GenericEnum::A::<isize, isize>(1).clone(); | |
| let _ = GenericStruct { foo: (), bar: (), baz: 1 }.clone(); | |
| let _ = GenericTupleStruct(1, ()).clone(); | |
| } |