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 @@ -871,10 +871,12 @@ def on_conditional_branch():
871871 if isinstance (self .scope , FunctionScope ) and name in self .scope .globals :
872872 self .scope .globals .remove (name )
873873 else :
874- try :
875- del self .scope [name ]
876- except KeyError :
874+ binding = self .scope .get (name , None )
875+ if not binding or isinstance (binding , Builtin ):
877876 self .report (messages .UndefinedName , node , name )
877+ return
878+
879+ del self .scope [name ]
878880
879881 def handleChildren (self , tree , omit = None ):
880882 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