| // check-pass | |
| // compile-flags: --crate-type=lib | |
| #![feature(decl_macro)] | |
| #![feature(lang_items)] | |
| #![feature(no_core)] | |
| #![feature(rustc_attrs)] | |
| #![no_core] | |
| #[rustc_builtin_macro] | |
| macro derive() {} | |
| #[rustc_builtin_macro(Default, attributes(default))] | |
| macro Default() {} | |
| mod default { | |
| pub trait Default { | |
| fn default() -> Self; | |
| } | |
| impl Default for u8 { | |
| fn default() -> u8 { | |
| 0 | |
| } | |
| } | |
| } | |
| #[lang = "sized"] | |
| trait Sized {} | |
| #[derive(Default)] | |
| enum S { | |
| #[default] // OK | |
| Foo, | |
| } |