From 6ab55a1e523d21059ae1da630c2179c2eb2b725c Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 27 Mar 2023 21:59:55 -0700 Subject: [PATCH 1/2] Add regression test for issue 2415 Currently fails: error: unexpected end of input, unexpected token in nested attribute, expected ident --> test_suite/tests/regression/issue2415.rs:4:9 | 4 | #[serde()] | ^ --- test_suite/tests/regression/issue2415.rs | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 test_suite/tests/regression/issue2415.rs diff --git a/test_suite/tests/regression/issue2415.rs b/test_suite/tests/regression/issue2415.rs new file mode 100644 index 000000000..31c522709 --- /dev/null +++ b/test_suite/tests/regression/issue2415.rs @@ -0,0 +1,5 @@ +use serde_derive::Serialize; + +#[derive(Serialize)] +#[serde()] +pub struct S; From 4cb8d079f8658bef6b7a41caca11f5111d067df5 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 27 Mar 2023 22:00:46 -0700 Subject: [PATCH 2/2] Accept empty #[serde()] attribute --- serde_derive/src/internals/attr.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/serde_derive/src/internals/attr.rs b/serde_derive/src/internals/attr.rs index 9875b6606..b0a7d08a2 100644 --- a/serde_derive/src/internals/attr.rs +++ b/serde_derive/src/internals/attr.rs @@ -307,6 +307,12 @@ impl Container { continue; } + if let syn::Meta::List(meta) = &attr.meta { + if meta.tokens.is_empty() { + continue; + } + } + if let Err(err) = attr.parse_nested_meta(|meta| { if meta.path == RENAME { // #[serde(rename = "foo")] @@ -762,6 +768,12 @@ impl Variant { continue; } + if let syn::Meta::List(meta) = &attr.meta { + if meta.tokens.is_empty() { + continue; + } + } + if let Err(err) = attr.parse_nested_meta(|meta| { if meta.path == RENAME { // #[serde(rename = "foo")] @@ -1033,6 +1045,12 @@ impl Field { continue; } + if let syn::Meta::List(meta) = &attr.meta { + if meta.tokens.is_empty() { + continue; + } + } + if let Err(err) = attr.parse_nested_meta(|meta| { if meta.path == RENAME { // #[serde(rename = "foo")]