@@ -438,17 +438,6 @@ def generate_setattr_wrapper(builder: IRBuilder, cdef: ClassDef, setattr: FuncDe
438
438
if ir .inherits_python :
439
439
builder .error (error_base + "it inherits from a non-native class" , line )
440
440
441
- delattr_symbol = cdef .info .get ("__delattr__" )
442
- delattr = delattr_symbol .node if delattr_symbol else None
443
- delattr_override = delattr is not None and not delattr .fullname .startswith ("builtins." )
444
- if not delattr_override :
445
- builder .warning (
446
- f'Native class "{ ir .name } " overrides "__setattr__" but not "__delattr__". '
447
- + "At runtime, deleting attributes from this class will likely not work as expected. "
448
- + 'Consider also defining "__delattr__".' ,
449
- line ,
450
- )
451
-
452
441
with builder .enter_method (ir , name , c_int_rprimitive , internal = True ):
453
442
attr_arg = builder .add_argument ("attr" , object_rprimitive )
454
443
value_arg = builder .add_argument ("value" , object_rprimitive )
@@ -459,6 +448,9 @@ def generate_setattr_wrapper(builder: IRBuilder, cdef: ClassDef, setattr: FuncDe
459
448
builder .add_bool_branch (is_delattr , call_delattr , call_setattr )
460
449
461
450
builder .activate_block (call_delattr )
451
+ delattr_symbol = cdef .info .get ("__delattr__" )
452
+ delattr = delattr_symbol .node if delattr_symbol else None
453
+ delattr_override = delattr is not None and not delattr .fullname .startswith ("builtins." )
462
454
if delattr_override :
463
455
builder .gen_method_call (builder .self (), "__delattr__" , [attr_arg ], None , line )
464
456
else :
0 commit comments