@@ -1032,14 +1032,13 @@ impl ToTokens for MethodNursery {
10321032#[ derive( Default ) ]
10331033#[ allow( clippy:: type_complexity) ]
10341034struct GetSetNursery {
1035- map : HashMap < ( String , Vec < Attribute > ) , ( Option < Ident > , Option < Ident > , Option < Ident > ) > ,
1035+ map : HashMap < ( String , Vec < Attribute > ) , ( Option < Ident > , Option < Ident > ) > ,
10361036 validated : bool ,
10371037}
10381038
10391039enum GetSetItemKind {
10401040 Get ,
10411041 Set ,
1042- Delete ,
10431042}
10441043
10451044impl GetSetNursery {
@@ -1058,7 +1057,6 @@ impl GetSetNursery {
10581057 let func = match kind {
10591058 GetSetItemKind :: Get => & mut entry. 0 ,
10601059 GetSetItemKind :: Set => & mut entry. 1 ,
1061- GetSetItemKind :: Delete => & mut entry. 2 ,
10621060 } ;
10631061 if func. is_some ( ) {
10641062 bail_span ! (
@@ -1073,10 +1071,10 @@ impl GetSetNursery {
10731071
10741072 fn validate ( & mut self ) -> Result < ( ) > {
10751073 let mut errors = Vec :: new ( ) ;
1076- for ( ( name, _cfgs) , ( getter, setter, deleter ) ) in & self . map {
1074+ for ( ( name, _cfgs) , ( getter, setter) ) in & self . map {
10771075 if getter. is_none ( ) {
10781076 errors. push ( err_span ! (
1079- setter. as_ref( ) . or ( deleter . as_ref ( ) ) . unwrap( ) ,
1077+ setter. as_ref( ) . unwrap( ) ,
10801078 "GetSet '{}' is missing a getter" ,
10811079 name
10821080 ) ) ;
@@ -1091,33 +1089,24 @@ impl GetSetNursery {
10911089impl ToTokens for GetSetNursery {
10921090 fn to_tokens ( & self , tokens : & mut TokenStream ) {
10931091 assert ! ( self . validated, "Call `validate()` before token generation" ) ;
1094- let properties = self
1095- . map
1096- . iter ( )
1097- . map ( |( ( name, cfgs) , ( getter, setter, deleter) ) | {
1098- let setter = match setter {
1099- Some ( setter) => quote_spanned ! { setter. span( ) => . with_set( Self :: #setter) } ,
1100- None => quote ! { } ,
1101- } ;
1102- let deleter = match deleter {
1103- Some ( deleter) => {
1104- quote_spanned ! { deleter. span( ) => . with_delete( Self :: #deleter) }
1105- }
1106- None => quote ! { } ,
1107- } ;
1108- quote_spanned ! { getter. span( ) =>
1109- #( #cfgs ) *
1110- class. set_str_attr(
1111- #name,
1112- :: rustpython_vm:: PyRef :: new_ref(
1113- :: rustpython_vm:: builtins:: PyGetSet :: new( #name. into( ) , class)
1114- . with_get( Self :: #getter)
1115- #setter #deleter,
1116- ctx. types. getset_type. to_owned( ) , None ) ,
1117- ctx
1118- ) ;
1119- }
1120- } ) ;
1092+ let properties = self . map . iter ( ) . map ( |( ( name, cfgs) , ( getter, setter) ) | {
1093+ let setter = match setter {
1094+ Some ( setter) => quote_spanned ! { setter. span( ) => . with_set( Self :: #setter) } ,
1095+ None => quote ! { } ,
1096+ } ;
1097+ quote_spanned ! { getter. span( ) =>
1098+ #( #cfgs ) *
1099+ class. set_str_attr(
1100+ #name,
1101+ :: rustpython_vm:: PyRef :: new_ref(
1102+ :: rustpython_vm:: builtins:: PyGetSet :: new( #name. into( ) , class)
1103+ . with_get( Self :: #getter)
1104+ #setter,
1105+ ctx. types. getset_type. to_owned( ) , None ) ,
1106+ ctx
1107+ ) ;
1108+ }
1109+ } ) ;
11211110 tokens. extend ( properties) ;
11221111 }
11231112}
@@ -1242,7 +1231,7 @@ impl MethodItemMeta {
12421231struct GetSetItemMeta ( ItemMetaInner ) ;
12431232
12441233impl ItemMeta for GetSetItemMeta {
1245- const ALLOWED_NAMES : & ' static [ & ' static str ] = & [ "name" , "setter" , "deleter" ] ;
1234+ const ALLOWED_NAMES : & ' static [ & ' static str ] = & [ "name" , "setter" ] ;
12461235
12471236 fn from_inner ( inner : ItemMetaInner ) -> Self {
12481237 Self ( inner)
@@ -1256,17 +1245,10 @@ impl ItemMeta for GetSetItemMeta {
12561245impl GetSetItemMeta {
12571246 fn getset_name ( & self ) -> Result < ( String , GetSetItemKind ) > {
12581247 let inner = self . inner ( ) ;
1259- let kind = match ( inner. _bool ( "setter" ) ?, inner. _bool ( "deleter" ) ?) {
1260- ( false , false ) => GetSetItemKind :: Get ,
1261- ( true , false ) => GetSetItemKind :: Set ,
1262- ( false , true ) => GetSetItemKind :: Delete ,
1263- ( true , true ) => {
1264- bail_span ! (
1265- & inner. meta_ident,
1266- "can't have both setter and deleter on a #[{}] fn" ,
1267- inner. meta_name( )
1268- )
1269- }
1248+ let kind = if inner. _bool ( "setter" ) ? {
1249+ GetSetItemKind :: Set
1250+ } else {
1251+ GetSetItemKind :: Get
12701252 } ;
12711253 let name = inner. _optional_str ( "name" ) ?;
12721254 let py_name = if let Some ( name) = name {
@@ -1299,7 +1281,6 @@ impl GetSetItemMeta {
12991281 match kind {
13001282 GetSetItemKind :: Get => sig_name,
13011283 GetSetItemKind :: Set => extract_prefix_name ( "set_" , "setter" ) ?,
1302- GetSetItemKind :: Delete => extract_prefix_name ( "del_" , "deleter" ) ?,
13031284 }
13041285 } ;
13051286 Ok ( ( py_name, kind) )
0 commit comments