@@ -438,17 +438,6 @@ def generate_setattr_wrapper(builder: IRBuilder, cdef: ClassDef, setattr: FuncDe
438438 if ir .inherits_python :
439439 builder .error (error_base + "it inherits from a non-native class" , line )
440440
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-
452441 with builder .enter_method (ir , name , c_int_rprimitive , internal = True ):
453442 attr_arg = builder .add_argument ("attr" , object_rprimitive )
454443 value_arg = builder .add_argument ("value" , object_rprimitive )
@@ -459,6 +448,9 @@ def generate_setattr_wrapper(builder: IRBuilder, cdef: ClassDef, setattr: FuncDe
459448 builder .add_bool_branch (is_delattr , call_delattr , call_setattr )
460449
461450 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." )
462454 if delattr_override :
463455 builder .gen_method_call (builder .self (), "__delattr__" , [attr_arg ], None , line )
464456 else :
0 commit comments