From fefc898fdf95631037aae90cc3301dc0029dae95 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Sat, 25 Jan 2025 20:01:08 +0100 Subject: [PATCH] xso-proc: Allow #[xml(flag)] without params MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The namespace defaults to the parent’s namespace, and the name to the field name, so we can avoid needlessly duplicating that info. --- parsers/src/sm.rs | 2 +- parsers/src/starttls.rs | 2 +- parsers/src/util/macro_tests.rs | 2 +- xso-proc/src/meta.rs | 10 ++++++---- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/parsers/src/sm.rs b/parsers/src/sm.rs index e018e6fde5f24b6a5602dd12428f055d0acbc6ef..d9e1996250cd7a40b5bcb827ca7f60cb7f6c5cf8 100644 --- a/parsers/src/sm.rs +++ b/parsers/src/sm.rs @@ -139,7 +139,7 @@ pub struct Resumed { #[xml(namespace = ns::SM, name = "sm")] pub struct StreamManagement { /// `` flag. - #[xml(flag(name = "optional"))] + #[xml(flag)] pub optional: bool, } diff --git a/parsers/src/starttls.rs b/parsers/src/starttls.rs index 182537ac1a0e43d35260da10e53ac9a57a22f392..92b156f2d1235856002a79af11b6f3382ba0bea5 100644 --- a/parsers/src/starttls.rs +++ b/parsers/src/starttls.rs @@ -25,7 +25,7 @@ pub struct Proceed; #[xml(namespace = ns::TLS, name = "starttls")] pub struct StartTls { /// Marker for mandatory StartTLS. - #[xml(flag(name = "required"))] + #[xml(flag)] pub required: bool, } diff --git a/parsers/src/util/macro_tests.rs b/parsers/src/util/macro_tests.rs index 98bc0a8ea199f510f88ac30430f58d7c519517ac..918f00b4b1d411955d55ace8da5130919a822681 100644 --- a/parsers/src/util/macro_tests.rs +++ b/parsers/src/util/macro_tests.rs @@ -1977,7 +1977,7 @@ fn extract_ignore_unknown_stuff_roundtrip() { #[derive(FromXml, AsXml, PartialEq, Debug, Clone)] #[xml(namespace = NS1, name = "foo")] struct Flag { - #[xml(flag(namespace = NS1, name = "flag"))] + #[xml(flag)] flag: bool, } diff --git a/xso-proc/src/meta.rs b/xso-proc/src/meta.rs index 43e7af5489a6bd4acba5e7c07f12ea6e5f40afe5..8018d15a4e8d15fa8db141469d92c7aec7611f96 100644 --- a/xso-proc/src/meta.rs +++ b/xso-proc/src/meta.rs @@ -1055,10 +1055,12 @@ impl XmlFieldMeta { /// Parse a `#[xml(flag)]` meta. fn flag_from_meta(meta: ParseNestedMeta<'_>) -> Result { let mut qname = QNameRef::default(); - meta.parse_nested_meta(|meta| match qname.parse_incremental_from_meta(meta)? { - None => Ok(()), - Some(meta) => Err(Error::new_spanned(meta.path, "unsupported key")), - })?; + if meta.input.peek(syn::token::Paren) { + meta.parse_nested_meta(|meta| match qname.parse_incremental_from_meta(meta)? { + None => Ok(()), + Some(meta) => Err(Error::new_spanned(meta.path, "unsupported key")), + })?; + } Ok(Self::Flag { span: meta.path.span(), qname,