Allow field-less enums

This commit is contained in:
Michael Pfaff 2022-05-27 19:50:17 -04:00
parent af358d7e62
commit 6f46786e8d
Signed by: michael
GPG Key ID: CF402C4A012AA9D4
2 changed files with 28 additions and 14 deletions

View File

@ -56,6 +56,24 @@ mod tests {
value: 'dyn (Bar),
}
}
OptionalFooOrBarDyn {
Some {
value: 'dyn (FooOrBar),
},
None {
}
}
OptionalFooOrBar {
Some {
value: (FooOrBar),
},
None {
}
}
}
// make sure A. serde is working and B. we get expected structure

View File

@ -1,5 +1,3 @@
use paste;
#[doc(hidden)]
#[macro_export]
macro_rules! query_def_type {
@ -164,7 +162,7 @@ macro_rules! query_def_internal_enum {
$(#[$field_meta:meta])
*
$field:ident: $($qualifier:lifetime)? ($($type:tt)+),
)+
)*
}
),+
}
@ -183,7 +181,7 @@ macro_rules! query_def_internal_enum {
$(#[$field_meta])
*
$field: Option<$crate::query_def_type!(@ $($qualifier)? ($($type)+))>,
)+
)*
}
),+
}
@ -211,7 +209,7 @@ macro_rules! query_def_internal_enum {
$vis struct [<$data Def Variant $variant>] {
$(
pub $field: $crate::query_def_field!(@ $($qualifier)? ($($type)+)),
)+
)*
}
)+
}
@ -222,13 +220,11 @@ macro_rules! query_def_internal_enum {
fn filter_ref(&mut self, def: &Self::Definition) {
match self {
$(
Self::$variant { $( ref mut $field ),+ } => {
let def = $crate::paste::paste! { &def.[<$variant:snake:lower>] };
Self::$variant { $( ref mut $field ),* } => {
$(
let query = &def.$field;
let query = &$crate::paste::paste! { &def.[<$variant:snake:lower>] }.$field;
$crate::query_def_filter!(@ query, $field, $($qualifier)? ($($type)+));
)
+
)*
}
)+
}
@ -303,7 +299,7 @@ macro_rules! query_def_enum {
$(#[$field_meta:meta])
*
$field:ident: $($qualifier:lifetime)? ($($type:tt)+),
)+
)*
}
),+
}
@ -329,7 +325,7 @@ macro_rules! query_def_enum {
$(#[$field_meta])
*
$field: $($qualifier)? ($($type)+),
)+
)*
}
),+
}
@ -409,7 +405,7 @@ macro_rules! query_def_enum {
$(#[$field_meta:meta])
*
$field:ident: $($qualifier:lifetime)? ($($type:tt)+),
)+
)*
}
),+
}
@ -445,7 +441,7 @@ macro_rules! query_def_enum {
$(#[$field_meta])
*
$field: $($qualifier)? ($($type)+),
)+
)*
}
),+
}