Only allow #[serde(default)]` on structs
This commit is contained in:
parent
9444db5f19
commit
7bee779514
@ -167,7 +167,14 @@ impl Item {
|
||||
|
||||
// Parse `#[serde(default)]`
|
||||
MetaItem(Word(ref name)) if name == "default" => {
|
||||
default.set_true();
|
||||
match item.body {
|
||||
syn::Body::Struct(_) => {
|
||||
default.set_true();
|
||||
}
|
||||
_ => {
|
||||
cx.error("#[serde(default)] can only be used on structs")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Parse `#[serde(bound="D: Serialize")]`
|
||||
|
8
test_suite/tests/compile-fail/default-attribute/enum.rs
Normal file
8
test_suite/tests/compile-fail/default-attribute/enum.rs
Normal file
@ -0,0 +1,8 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Deserialize)] //~ ERROR: proc-macro derive panicked
|
||||
#[serde(default)] //~^ HELP: #[serde(default)] can only be used on structs
|
||||
enum E {
|
||||
S { f: u8 },
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Deserialize)] //~ ERROR: proc-macro derive panicked
|
||||
#[serde(default)] //~^ HELP: #[serde(default)] can only be used on structs
|
||||
struct T(u8, u8);
|
||||
|
||||
fn main() { }
|
Loading…
x
Reference in New Issue
Block a user