| // `#![derive]` raises errors when it occurs at contexts other than ADT |
| // definitions. |
| |
| #[derive(Debug)] |
| //~^ ERROR `derive` may only be applied to `struct`s, `enum`s and `union`s |
| mod derive { |
| mod inner { #![derive(Debug)] } |
| //~^ ERROR `derive` may only be applied to `struct`s, `enum`s and `union`s |
| //~| ERROR inner macro attributes are unstable |
| |
| #[derive(Debug)] |
| //~^ ERROR `derive` may only be applied to `struct`s, `enum`s and `union`s |
| fn derive() { } |
| |
| #[derive(Copy, Clone)] // (can't derive Debug for unions) |
| union U { f: i32 } |
| |
| #[derive(Debug)] |
| struct S; |
| |
| #[derive(Debug)] |
| enum E { } |
| |
| #[derive(Debug)] |
| //~^ ERROR `derive` may only be applied to `struct`s, `enum`s and `union`s |
| type T = S; |
| |
| #[derive(Debug)] |
| //~^ ERROR `derive` may only be applied to `struct`s, `enum`s and `union`s |
| impl S { } |
| } |
| |
| fn main() {} |