mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-14 03:31:02 +00:00
Only allow #[serde(default)]` on structs
This commit is contained in:
@@ -167,7 +167,14 @@ impl Item {
|
|||||||
|
|
||||||
// Parse `#[serde(default)]`
|
// Parse `#[serde(default)]`
|
||||||
MetaItem(Word(ref name)) if name == "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")]`
|
// Parse `#[serde(bound="D: Serialize")]`
|
||||||
|
|||||||
@@ -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() { }
|
||||||
Reference in New Issue
Block a user