@@ -92,15 +92,11 @@ pub(crate) fn sort_items(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
9292 } else if let Some ( impl_ast) = ctx. find_node_at_offset :: < ast:: Impl > ( ) {
9393 add_sort_methods_assist ( acc, impl_ast. assoc_item_list ( ) ?)
9494 } else if let Some ( struct_ast) = ctx. find_node_at_offset :: < ast:: Struct > ( ) {
95- match struct_ast. field_list ( ) {
96- Some ( ast:: FieldList :: RecordFieldList ( it) ) => add_sort_fields_assist ( acc, it) ,
97- _ => {
98- cov_mark:: hit!( not_applicable_if_sorted_or_empty_or_single) ;
99- None
100- }
101- }
95+ add_sort_field_list_assist ( acc, struct_ast. field_list ( ) )
10296 } else if let Some ( union_ast) = ctx. find_node_at_offset :: < ast:: Union > ( ) {
10397 add_sort_fields_assist ( acc, union_ast. record_field_list ( ) ?)
98+ } else if let Some ( variant_ast) = ctx. find_node_at_offset :: < ast:: Variant > ( ) {
99+ add_sort_field_list_assist ( acc, variant_ast. field_list ( ) )
104100 } else if let Some ( enum_struct_variant_ast) = ctx. find_node_at_offset :: < ast:: RecordFieldList > ( )
105101 {
106102 // should be above enum and below struct
@@ -140,6 +136,16 @@ impl AddRewrite for Assists {
140136 }
141137}
142138
139+ fn add_sort_field_list_assist ( acc : & mut Assists , field_list : Option < ast:: FieldList > ) -> Option < ( ) > {
140+ match field_list {
141+ Some ( ast:: FieldList :: RecordFieldList ( it) ) => add_sort_fields_assist ( acc, it) ,
142+ _ => {
143+ cov_mark:: hit!( not_applicable_if_sorted_or_empty_or_single) ;
144+ None
145+ }
146+ }
147+ }
148+
143149fn add_sort_methods_assist ( acc : & mut Assists , item_list : ast:: AssocItemList ) -> Option < ( ) > {
144150 let methods = get_methods ( & item_list) ;
145151 let sorted = sort_by_name ( & methods) ;
@@ -541,7 +547,7 @@ enum Bar {
541547 }
542548
543549 #[ test]
544- fn sort_struct_enum_variant ( ) {
550+ fn sort_struct_enum_variant_fields ( ) {
545551 check_assist (
546552 sort_items,
547553 r#"
@@ -558,6 +564,23 @@ enum Bar {
558564 b = 14,
559565 a,
560566 c(u32, usize),
567+ }
568+ "# ,
569+ )
570+ }
571+
572+ #[ test]
573+ fn sort_struct_enum_variant ( ) {
574+ check_assist (
575+ sort_items,
576+ r#"
577+ enum Bar {
578+ $0d$0{ second: usize, first: u32 },
579+ }
580+ "# ,
581+ r#"
582+ enum Bar {
583+ d{ first: u32, second: usize },
561584}
562585 "# ,
563586 )
0 commit comments