@@ -615,9 +615,7 @@ impl PropertyItemMeta {
615
615
fn property_name ( & self ) -> Result < ( String , GetSetItemKind ) > {
616
616
let inner = self . inner ( ) ;
617
617
let magic = inner. _bool ( "magic" ) ?;
618
- let setter = inner. _bool ( "setter" ) ?;
619
- let deleter = inner. _bool ( "deleter" ) ?;
620
- let kind = match ( setter, deleter) {
618
+ let kind = match ( inner. _bool ( "setter" ) ?, inner. _bool ( "deleter" ) ?) {
621
619
( false , false ) => GetSetItemKind :: Get ,
622
620
( true , false ) => GetSetItemKind :: Set ,
623
621
( false , true ) => GetSetItemKind :: Delete ,
@@ -636,54 +634,37 @@ impl PropertyItemMeta {
636
634
name
637
635
} else {
638
636
let sig_name = inner. item_name ( ) ;
639
- let name = if setter {
640
- if let Some ( name) = sig_name. strip_prefix ( "set_" ) {
637
+ let extract_prefix_name = |prefix , item_typ| {
638
+ if let Some ( name) = sig_name. strip_prefix ( prefix ) {
641
639
if name. is_empty ( ) {
642
- return Err ( syn:: Error :: new_spanned (
640
+ Err ( syn:: Error :: new_spanned (
643
641
& inner. meta_ident ,
644
642
format ! (
645
- "A #[{}(setter)] fn with a set_* name must \
646
- have something after \" set_\" ",
647
- inner. meta_name( )
643
+ "A #[{}({typ})] fn with a {prefix}* name must \
644
+ have something after \" {prefix}\" ",
645
+ inner. meta_name( ) ,
646
+ typ = item_typ,
647
+ prefix = prefix
648
648
) ,
649
- ) ) ;
649
+ ) )
650
+ } else {
651
+ Ok ( name. to_owned ( ) )
650
652
}
651
- name. to_string ( )
652
653
} else {
653
- return Err ( syn:: Error :: new_spanned (
654
+ Err ( syn:: Error :: new_spanned (
654
655
& inner. meta_ident ,
655
656
format ! (
656
657
"A #[{}(setter)] fn must either have a `name` \
657
658
parameter or a fn name along the lines of \" set_*\" ",
658
659
inner. meta_name( )
659
660
) ,
660
- ) ) ;
661
+ ) )
661
662
}
662
- } else if deleter {
663
- if let Some ( name) = sig_name. strip_prefix ( "del_" ) {
664
- if name. is_empty ( ) {
665
- return Err ( syn:: Error :: new_spanned (
666
- & inner. meta_ident ,
667
- format ! (
668
- "A #[{}(deleter)] fn with a del_* name must \
669
- have something after \" del_\" ",
670
- inner. meta_name( )
671
- ) ,
672
- ) ) ;
673
- }
674
- name. to_string ( )
675
- } else {
676
- return Err ( syn:: Error :: new_spanned (
677
- & inner. meta_ident ,
678
- format ! (
679
- "A #[{}(deleter)] fn must either have a `name` \
680
- parameter or a fn name along the lines of \" del_*\" ",
681
- inner. meta_name( )
682
- ) ,
683
- ) ) ;
684
- }
685
- } else {
686
- sig_name
663
+ } ;
664
+ let name = match kind {
665
+ GetSetItemKind :: Get => sig_name,
666
+ GetSetItemKind :: Set => extract_prefix_name ( "set_" , "setter" ) ?,
667
+ GetSetItemKind :: Delete => extract_prefix_name ( "del_" , "deleter" ) ?,
687
668
} ;
688
669
if magic {
689
670
format ! ( "__{}__" , name)
0 commit comments