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():
871
871
if isinstance (self .scope , FunctionScope ) and name in self .scope .globals :
872
872
self .scope .globals .remove (name )
873
873
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 ):
877
876
self .report (messages .UndefinedName , node , name )
877
+ return
878
+
879
+ del self .scope [name ]
878
880
879
881
def handleChildren (self , tree , omit = None ):
880
882
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):
371
371
"""Del an undefined name."""
372
372
self .flakes ('del a' , m .UndefinedName )
373
373
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
+
374
387
def test_delConditional (self ):
375
388
"""
376
389
Ignores conditional bindings deletion.
You can’t perform that action at this time.
0 commit comments