Skip to content

Commit 4029ee5

Browse files
author
hauntsaninja
committed
del: add more tests
1 parent 343ccb5 commit 4029ee5

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

Lib/test/test_grammar.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,22 @@ def test_del_stmt(self):
801801
del abc
802802
del x, y, (z, xyz)
803803

804+
x, y, z = "xyz"
805+
del x
806+
del y,
807+
del (z)
808+
809+
a, b, c, d, e, f, g = "abcdefg"
810+
del a, (b, c), (d, (e, f))
811+
812+
a, b, c, d, e, f, g = "abcdefg"
813+
del a, [b, c], (d, [e, f])
814+
815+
abcd = list("abcd")
816+
del abcd[1:2]
817+
818+
compile("del a, (b[0].c, (d.e, f.g[1:2])), [h.i.j], ()", "<testcase>", "exec")
819+
804820
def test_pass_stmt(self):
805821
# 'pass'
806822
pass

Lib/test/test_syntax.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -678,10 +678,29 @@ def test_assign_call(self):
678678
self._check_error("f() = 1", "assign")
679679

680680
def test_assign_del(self):
681-
self._check_error("del f()", "delete")
682-
self._check_error("del 1", "delete")
683-
self._check_error("del *x", "delete")
684-
self._check_error("del x, f()", "delete")
681+
self._check_error("del 1", "delete literal")
682+
self._check_error("del (1, 2)", "delete literal")
683+
self._check_error("del None", "delete None")
684+
self._check_error("del *x", "delete starred")
685+
self._check_error("del (*x)", "delete starred")
686+
self._check_error("del (*x,)", "delete starred")
687+
self._check_error("del [*x,]", "delete starred")
688+
self._check_error("del f()", "delete function call")
689+
self._check_error("del f(a, b)", "delete function call")
690+
self._check_error("del o.f()", "delete function call")
691+
self._check_error("del a[0]()", "delete function call")
692+
self._check_error("del x, f()", "delete function call")
693+
self._check_error("del f(), x", "delete function call")
694+
self._check_error("del (a if True else b)", "delete conditional")
695+
self._check_error("del +a", "delete operator")
696+
self._check_error("del a, +b", "delete operator")
697+
self._check_error("del a + b", "delete operator")
698+
self._check_error("del (a + b, c)", "delete operator")
699+
self._check_error("del (c[0], a + b)", "delete operator")
700+
self._check_error("del (a := 5)", "delete named expression")
701+
# We don't have a special message for this, but make sure we don't
702+
# report "cannot delete name"
703+
self._check_error("del a += b", "invalid syntax")
685704

686705
def test_global_param_err_first(self):
687706
source = """if 1:

0 commit comments

Comments
 (0)