Allow field-less enums
This commit is contained in:
parent
af358d7e62
commit
6f46786e8d
18
src/lib.rs
18
src/lib.rs
|
@ -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
|
||||
|
|
|
@ -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)+),
|
||||
)+
|
||||
)*
|
||||
}
|
||||
),+
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue