File tree Expand file tree Collapse file tree 1 file changed +19
-1
lines changed Expand file tree Collapse file tree 1 file changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -84,6 +84,7 @@ pub(crate) fn gen_for_enum(
8484 let mut augmentations_update = TokenStream :: default ( ) ;
8585
8686 let mut constructors = TokenStream :: default ( ) ;
87+ let mut updaters = TokenStream :: default ( ) ;
8788
8889 for ( item, variant) in variants. iter ( ) {
8990 let Fields :: Named ( ref fields) = variant. fields else {
@@ -128,6 +129,23 @@ pub(crate) fn gen_for_enum(
128129 } ;
129130
130131 constructors. extend ( constructor) ;
132+
133+ let genned_updater = gen_updater ( & fields, false ) ?;
134+
135+ let field_names = fields
136+ . iter ( )
137+ . map ( |( field, _) | field. ident . as_ref ( ) . unwrap ( ) ) ;
138+ let updater = quote ! {
139+
140+ if __clap_arg_matches. contains_id( #group_id) {
141+ let #item_name:: #variant_name { #( #field_names ) , * } = self else {
142+ unreachable!( ) ;
143+ } ;
144+ #genned_updater;
145+ }
146+ } ;
147+
148+ updaters. extend ( updater) ;
131149 }
132150
133151 let raw_deprecated = raw_deprecated ( ) ;
@@ -171,7 +189,7 @@ pub(crate) fn gen_for_enum(
171189
172190 fn update_from_arg_matches_mut( & mut self , __clap_arg_matches: & mut clap:: ArgMatches ) -> :: std:: result:: Result <( ) , clap:: Error > {
173191 #raw_deprecated
174- // #updater
192+ #updaters
175193 :: std:: result:: Result :: Ok ( ( ) )
176194 }
177195 }
You can’t perform that action at this time.
0 commit comments