@@ -5303,14 +5303,53 @@ Test_property_set(PyObject *self, PyObject *value, void *Py_UNUSED(context))
53035303{
53045304 int return_value ;
53055305
5306+ if (value == NULL ) {
5307+ PyErr_Format (PyExc_AttributeError ,
5308+ "attribute 'property' of '%.100s' objects cannot be deleted" ,
5309+ Py_TYPE (self )-> tp_name );
5310+ return -1 ;
5311+ }
53065312 return_value = Test_property_set_impl ((TestObj * )self , value );
53075313
53085314 return return_value ;
53095315}
53105316
53115317static int
53125318Test_property_set_impl (TestObj * self , PyObject * value )
5313- /*[clinic end generated code: output=49f925ab2a33b637 input=3bc3f46a23c83a88]*/
5319+ /*[clinic end generated code: output=ec103a151cf51d25 input=3bc3f46a23c83a88]*/
5320+
5321+ /*[clinic input]
5322+ @setter
5323+ @deleter
5324+ Test.settable_and_deletable
5325+ [clinic start generated code]*/
5326+
5327+ #if !defined(Test_settable_and_deletable_DOCSTR )
5328+ # define Test_settable_and_deletable_DOCSTR NULL
5329+ #endif
5330+ #if defined(TEST_SETTABLE_AND_DELETABLE_GETSETDEF )
5331+ # undef TEST_SETTABLE_AND_DELETABLE_GETSETDEF
5332+ # define TEST_SETTABLE_AND_DELETABLE_GETSETDEF {"settable_and_deletable", (getter)Test_settable_and_deletable_get, (setter)Test_settable_and_deletable_set, Test_settable_and_deletable_DOCSTR},
5333+ #else
5334+ # define TEST_SETTABLE_AND_DELETABLE_GETSETDEF {"settable_and_deletable", NULL, (setter)Test_settable_and_deletable_set, NULL},
5335+ #endif
5336+
5337+ static int
5338+ Test_settable_and_deletable_set_impl (TestObj * self , PyObject * value );
5339+
5340+ static int
5341+ Test_settable_and_deletable_set (PyObject * self , PyObject * value , void * Py_UNUSED (context ))
5342+ {
5343+ int return_value ;
5344+
5345+ return_value = Test_settable_and_deletable_set_impl ((TestObj * )self , value );
5346+
5347+ return return_value ;
5348+ }
5349+
5350+ static int
5351+ Test_settable_and_deletable_set_impl (TestObj * self , PyObject * value )
5352+ /*[clinic end generated code: output=479986d499b2f56d input=f5647f3511b9daea]*/
53145353
53155354/*[clinic input]
53165355@setter
@@ -5335,14 +5374,20 @@ Test_setter_first_with_docstr_set(PyObject *self, PyObject *value, void *Py_UNUS
53355374{
53365375 int return_value ;
53375376
5377+ if (value == NULL ) {
5378+ PyErr_Format (PyExc_AttributeError ,
5379+ "attribute 'setter_first_with_docstr' of '%.100s' objects cannot be deleted" ,
5380+ Py_TYPE (self )-> tp_name );
5381+ return -1 ;
5382+ }
53385383 return_value = Test_setter_first_with_docstr_set_impl ((TestObj * )self , value );
53395384
53405385 return return_value ;
53415386}
53425387
53435388static int
53445389Test_setter_first_with_docstr_set_impl (TestObj * self , PyObject * value )
5345- /*[clinic end generated code: output=5aaf44373c0af545 input=31a045ce11bbe961]*/
5390+ /*[clinic end generated code: output=eac8bafcaa50aa51 input=31a045ce11bbe961]*/
53465391
53475392/*[clinic input]
53485393@getter
0 commit comments