99// except according to those terms.
1010
1111use crate :: {
12- attrs:: { Attrs , Name , DEFAULT_CASING , DEFAULT_ENV_CASING } ,
12+ attrs:: { Attrs , Kind , Name , DEFAULT_CASING , DEFAULT_ENV_CASING } ,
1313 dummies,
1414 utils:: Sp ,
1515} ;
@@ -18,8 +18,8 @@ use proc_macro2::{Span, TokenStream};
1818use proc_macro_error:: abort_call_site;
1919use quote:: quote;
2020use syn:: {
21- punctuated:: Punctuated , spanned :: Spanned , token:: Comma , Attribute , Data , DataEnum , DeriveInput ,
22- Fields , Ident , Variant ,
21+ punctuated:: Punctuated , token:: Comma , Attribute , Data , DataEnum , DeriveInput , Fields , Ident ,
22+ Variant ,
2323} ;
2424
2525pub fn derive_arg_enum ( input : & DeriveInput ) -> TokenStream {
@@ -76,15 +76,19 @@ fn lits(
7676) -> Vec < ( TokenStream , Ident ) > {
7777 variants
7878 . iter ( )
79- . flat_map ( |variant| {
80- let attrs = Attrs :: from_struct (
81- variant. span ( ) ,
82- & variant. attrs ,
83- Name :: Derived ( variant. ident . clone ( ) ) ,
79+ . filter_map ( |variant| {
80+ let attrs = Attrs :: from_arg_enum_variant (
81+ variant,
8482 parent_attribute. casing ( ) ,
8583 parent_attribute. env_casing ( ) ,
8684 ) ;
87-
85+ if let Kind :: Skip ( _) = & * attrs. kind ( ) {
86+ None
87+ } else {
88+ Some ( ( variant, attrs) )
89+ }
90+ } )
91+ . flat_map ( |( variant, attrs) | {
8892 let mut ret = vec ! [ ( attrs. cased_name( ) , variant. ident. clone( ) ) ] ;
8993
9094 attrs
0 commit comments