diff options
| author | Jacob Pratt <jacob@jhpratt.dev> | 2021-06-29 20:22:52 -0400 |
|---|---|---|
| committer | Jacob Pratt <jacob@jhpratt.dev> | 2021-07-27 15:47:47 -0400 |
| commit | c70147fd66e08962ab06adf12eb6a41bc1ea7f08 (patch) | |
| tree | 3efabfe7f35fb460fdee7dbf4ec35c8d4b5305d3 /src/test/ui/macros/macros-nonfatal-errors.rs | |
| parent | fd853c00e255559255885aadff9e93a1760c8728 (diff) | |
| download | rust-c70147fd66e08962ab06adf12eb6a41bc1ea7f08.tar.gz rust-c70147fd66e08962ab06adf12eb6a41bc1ea7f08.zip | |
Permit deriving default on enums with `#[default]`
Diffstat (limited to 'src/test/ui/macros/macros-nonfatal-errors.rs')
| -rw-r--r-- | src/test/ui/macros/macros-nonfatal-errors.rs | 57 |
1 files changed, 55 insertions, 2 deletions
diff --git a/src/test/ui/macros/macros-nonfatal-errors.rs b/src/test/ui/macros/macros-nonfatal-errors.rs index 0a496c9dc3d..bb5f4d089bc 100644 --- a/src/test/ui/macros/macros-nonfatal-errors.rs +++ b/src/test/ui/macros/macros-nonfatal-errors.rs @@ -5,9 +5,62 @@ #![feature(asm, llvm_asm)] #![feature(trace_macros, concat_idents)] +#![feature(derive_default_enum)] -#[derive(Default)] //~ ERROR -enum OrDeriveThis {} +#[derive(Default)] //~ ERROR no default declared +enum NoDeclaredDefault { + Foo, + Bar, +} + +#[derive(Default)] //~ ERROR multiple declared defaults +enum MultipleDefaults { + #[default] + Foo, + #[default] + Bar, + #[default] + Baz, +} + +#[derive(Default)] +enum ExtraDeriveTokens { + #[default = 1] //~ ERROR `#[default]` attribute does not accept a value + Foo, +} + +#[derive(Default)] +enum TwoDefaultAttrs { + #[default] + #[default] + Foo, //~ERROR multiple `#[default]` attributes + Bar, +} + +#[derive(Default)] +enum ManyDefaultAttrs { + #[default] + #[default] + #[default] + #[default] + Foo, //~ERROR multiple `#[default]` attributes + Bar, +} + +#[derive(Default)] +enum DefaultHasFields { + #[default] + Foo {}, //~ ERROR `#[default]` may only be used on unit variants + Bar, +} + +#[derive(Default)] +enum NonExhaustiveDefault { + #[default] + #[non_exhaustive] + Foo, //~ ERROR default variant must be exhaustive + Bar, +} fn main() { asm!(invalid); //~ ERROR |
