File tree Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -864,10 +864,12 @@ def on_conditional_branch():
864864 if isinstance (self .scope , FunctionScope ) and name in self .scope .globals :
865865 self .scope .globals .remove (name )
866866 else :
867- try :
868- del self .scope [name ]
869- except KeyError :
867+ binding = self .scope .get (name , None )
868+ if not binding or isinstance (binding , Builtin ):
870869 self .report (messages .UndefinedName , node , name )
870+ return
871+
872+ del self .scope [name ]
871873
872874 def handleChildren (self , tree , omit = None ):
873875 for node in iter_child_nodes (tree , omit = omit ):
Original file line number Diff line number Diff line change @@ -371,6 +371,19 @@ def test_delUndefined(self):
371371 """Del an undefined name."""
372372 self .flakes ('del a' , m .UndefinedName )
373373
374+ def test_del_builtin (self ):
375+ """Del a builtin not possible."""
376+ self .flakes ('del range' , m .UndefinedName )
377+
378+ def test_del_shadowed_builtin (self ):
379+ """
380+ Del a function with same name as builtin.
381+ """
382+ self .flakes ('''
383+ def range(): pass
384+ del range
385+ ''' )
386+
374387 def test_delConditional (self ):
375388 """
376389 Ignores conditional bindings deletion.
You can’t perform that action at this time.
0 commit comments