63
63
Traceback (most recent call last):
64
64
SyntaxError: cannot assign to function call
65
65
66
- # Pegen does not support this yet
67
- # >>> del f()
68
- # Traceback (most recent call last):
69
- # SyntaxError: cannot delete function call
66
+ >>> del f()
67
+ Traceback (most recent call last):
68
+ SyntaxError: cannot delete function call
70
69
71
70
>>> a + 1 = 2
72
71
Traceback (most recent call last):
@@ -665,7 +664,7 @@ def _check_error(self, code, errtext,
665
664
self .fail ("SyntaxError is not a %s" % subclass .__name__ )
666
665
mo = re .search (errtext , str (err ))
667
666
if mo is None :
668
- self .fail ("SyntaxError did not contain '%r' " % (errtext ,))
667
+ self .fail ("SyntaxError did not contain %r " % (errtext ,))
669
668
self .assertEqual (err .filename , filename )
670
669
if lineno is not None :
671
670
self .assertEqual (err .lineno , lineno )
@@ -677,10 +676,36 @@ def _check_error(self, code, errtext,
677
676
def test_assign_call (self ):
678
677
self ._check_error ("f() = 1" , "assign" )
679
678
680
- @support .skip_if_new_parser ("Pegen does not produce a specialized error "
681
- "message yet" )
682
679
def test_assign_del (self ):
683
- self ._check_error ("del f()" , "delete" )
680
+ self ._check_error ("del (,)" , "invalid syntax" )
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, b, ((c), (d,), e.f())]" , "delete function call" )
695
+ self ._check_error ("del (a if True else b)" , "delete conditional" )
696
+ self ._check_error ("del +a" , "delete operator" )
697
+ self ._check_error ("del a, +b" , "delete operator" )
698
+ self ._check_error ("del a + b" , "delete operator" )
699
+ self ._check_error ("del (a + b, c)" , "delete operator" )
700
+ self ._check_error ("del (c[0], a + b)" , "delete operator" )
701
+ self ._check_error ("del a.b.c + 2" , "delete operator" )
702
+ self ._check_error ("del a.b.c[0] + 2" , "delete operator" )
703
+ self ._check_error ("del (a, b, (c, d.e.f + 2))" , "delete operator" )
704
+ self ._check_error ("del [a, b, (c, d.e.f[0] + 2)]" , "delete operator" )
705
+ self ._check_error ("del (a := 5)" , "delete named expression" )
706
+ # We don't have a special message for this, but make sure we don't
707
+ # report "cannot delete name"
708
+ self ._check_error ("del a += b" , "invalid syntax" )
684
709
685
710
def test_global_param_err_first (self ):
686
711
source = """if 1:
0 commit comments