@@ -478,6 +478,10 @@ field : {field_ident}",
478478 qt ! { #item< #struct_generics_ty > }
479479 } ;
480480
481+ // Generate the correct former type with or without generics
482+ // Note: former_generics_ty always contains at least 'Definition' for formers
483+ let former_type_ref = qt ! { #former< Definition > } ;
484+
481485 #[ allow( clippy:: useless_attribute, clippy:: items_after_statements) ]
482486 use convert_case:: { Case , Casing } ;
483487
@@ -507,16 +511,16 @@ field : {field_ident}",
507511 #def_type // <<< Use the parsed syn::Type directly
508512 <
509513 #( #params, ) *
510- #former< #former_generics_ty > ,
511- #former< #former_generics_ty > ,
512- #subform_collection_end< Definition >,
514+ #former_type_ref ,
515+ #former_type_ref ,
516+ #subform_collection_end< Definition >
513517 >
514518 }
515519 // former::VectorDefinition< String, Self, Self, Struct1SubformCollectionVec1End, >
516520 } else {
517521 qt ! {
518522 <
519- #field_typ as former:: EntityToDefinition < #former< #former_generics_ty > , #former< #former_generics_ty > , #subform_collection_end< Definition > >
523+ #field_typ as former:: EntityToDefinition < #former_type_ref , #former_type_ref , #subform_collection_end< Definition > >
520524 >:: Definition
521525 }
522526 // < Vec< String > as former::EntityToDefinition< Self, Self, Struct1SubformCollectionVec1End > >::Definition
@@ -539,7 +543,7 @@ field : {field_ident}",
539543 <
540544 // Storage : former::CollectionAdd< Entry = < #field_typ as former::Collection >::Entry >,
541545 Storage = #field_typ,
542- Context = #former< #former_generics_ty > ,
546+ Context = #former_type_ref ,
543547 End = #subform_collection_end< Definition >,
544548 >,
545549 #subformer_definition:: Storage : ' a,
@@ -574,15 +578,11 @@ field : {field_ident}",
574578 <
575579 // Storage : former::CollectionAdd< Entry = < #field_typ as former::Collection >::Entry >,
576580 Storage = #field_typ,
577- Context = #former< #former_generics_ty > ,
581+ Context = #former_type_ref ,
578582 End = #subform_collection_end < Definition >,
579583 >,
580584 {
581- self . #subform_collection:: < former:: CollectionFormer ::
582- <
583- _,
584- _,
585- > > ( )
585+ self . #subform_collection:: < former:: CollectionFormer < _, _ > >( )
586586 }
587587
588588 }
@@ -595,7 +595,7 @@ field : {field_ident}",
595595 r"
596596/// The collection setter provides a collection setter that returns a CollectionFormer tailored for managing a collection of child entities. It employs a generic collection definition to facilitate operations on the entire collection, such as adding or updating elements.
597597
598- impl< Definition, > {former}< Definition, >
598+ impl< Definition > {former}< Definition >
599599where
600600 Definition : former::FormerDefinition< Storage = {former_storage} >,
601601{{
@@ -650,21 +650,22 @@ with the new content generated during the subforming process.
650650 let subformer_definition_types_string = format ! ( "{}Types" , qt! { #def_type } ) ;
651651 let subformer_definition_types: syn:: Type = syn:: parse_str ( & subformer_definition_types_string) ?;
652652 // <<< End Revert >>>
653- qt ! {
654- #subformer_definition_types
655- <
656- #( #params, ) *
657- #former< #former_generics_ty >,
658- #former< #former_generics_ty >,
653+ // Use the parsed definition types but ensure proper comma handling
654+ let element_type = params. first ( ) . expect ( "Expected element type parameter" ) ;
655+ quote:: quote! {
656+ #subformer_definition_types<
657+ #element_type,
658+ #former_type_ref,
659+ #former_type_ref
659660 >
660661 }
661662 } else {
662663 qt ! {
663664 <
664665 #field_typ as former:: EntityToDefinitionTypes
665666 <
666- #former< #former_generics_ty > ,
667- #former< #former_generics_ty > ,
667+ #former_type_ref ,
668+ #former_type_ref
668669 >
669670 >:: Types
670671 }
@@ -694,7 +695,7 @@ with the new content generated during the subforming process.
694695 }
695696
696697 #[ automatically_derived ]
697- impl < #former_generics_impl > former:: FormingEnd < #subformer_definition_types >
698+ impl < Definition > former:: FormingEnd < #subformer_definition_types >
698699 for #subform_collection_end< Definition >
699700 where
700701 #former_generics_where
@@ -704,9 +705,9 @@ with the new content generated during the subforming process.
704705 (
705706 & self ,
706707 storage : #field_typ,
707- super_former : Option < #former< #former_generics_ty > >,
708+ super_former : Option < #former_type_ref >,
708709 )
709- -> #former< #former_generics_ty >
710+ -> #former_type_ref
710711 {
711712 let mut super_former = super_former. unwrap( ) ;
712713 if let Some ( ref mut field ) = super_former. storage. #field_ident
@@ -755,6 +756,10 @@ with the new content generated during the subforming process.
755756 let field_typ = self . non_optional_ty ;
756757 let entry_typ: & syn:: Type = typ:: parameter_first ( field_typ) ?;
757758
759+ // Generate the correct former type with or without generics
760+ // Note: former_generics_ty always contains at least 'Definition' for formers
761+ let former_type_ref = qt ! { #former< Definition > } ;
762+
758763 let attr = self . attrs . subform_entry . as_ref ( ) . unwrap ( ) ;
759764 // let params = typ::type_parameters( &self.non_optional_ty, .. );
760765
@@ -964,7 +969,7 @@ formation process of the `{item}`.
964969 }
965970 }
966971
967- impl < #struct_generics_impl Types2 , Definition > former:: FormingEnd < Types2 , >
972+ impl < #struct_generics_impl Types2 , Definition > former:: FormingEnd < Types2 >
968973 for #subform_entry_end< Definition >
969974 where
970975 Definition : former:: FormerDefinition
@@ -974,8 +979,8 @@ formation process of the `{item}`.
974979 Types2 : former:: FormerDefinitionTypes
975980 <
976981 Storage = < < #field_typ as former:: Collection >:: Val as former:: EntityToStorage >:: Storage ,
977- Formed = #former< #former_generics_ty > ,
978- Context = #former< #former_generics_ty > ,
982+ Formed = #former_type_ref ,
983+ Context = #former_type_ref ,
979984 >,
980985 #struct_generics_where
981986 {
@@ -1037,6 +1042,10 @@ formation process of the `{item}`.
10371042 let field_ident = self . ident ;
10381043 let field_typ = self . non_optional_ty ;
10391044 let attr = self . attrs . subform_scalar . as_ref ( ) . unwrap ( ) ;
1045+
1046+ // Generate the correct former type with or without generics
1047+ // Note: former_generics_ty always contains at least 'Definition' for formers
1048+ let former_type_ref = qt ! { #former< Definition > } ;
10401049 // let params = typ::type_parameters( &self.non_optional_ty, .. );
10411050
10421051 // example : `children`
@@ -1265,7 +1274,7 @@ Essentially, this end action integrates the individually formed scalar value bac
12651274 }
12661275 }
12671276
1268- impl < #struct_generics_impl Types2 , Definition > former:: FormingEnd < Types2 , >
1277+ impl < #struct_generics_impl Types2 , Definition > former:: FormingEnd < Types2 >
12691278 for #subform_scalar_end< Definition >
12701279 where
12711280 Definition : former:: FormerDefinition
@@ -1275,8 +1284,8 @@ Essentially, this end action integrates the individually formed scalar value bac
12751284 Types2 : former:: FormerDefinitionTypes
12761285 <
12771286 Storage = < #field_typ as former:: EntityToStorage >:: Storage ,
1278- Formed = #former< #former_generics_ty > ,
1279- Context = #former< #former_generics_ty > ,
1287+ Formed = #former_type_ref ,
1288+ Context = #former_type_ref ,
12801289 >,
12811290 #struct_generics_where
12821291 {
0 commit comments