6363Traceback (most recent call last):
6464SyntaxError: cannot assign to function call
6565
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
7069
7170>>> a + 1 = 2
7271Traceback (most recent call last):
@@ -665,7 +664,7 @@ def _check_error(self, code, errtext,
665664 self .fail ("SyntaxError is not a %s" % subclass .__name__ )
666665 mo = re .search (errtext , str (err ))
667666 if mo is None :
668- self .fail ("SyntaxError did not contain '%r' " % (errtext ,))
667+ self .fail ("SyntaxError did not contain %r " % (errtext ,))
669668 self .assertEqual (err .filename , filename )
670669 if lineno is not None :
671670 self .assertEqual (err .lineno , lineno )
@@ -677,10 +676,36 @@ def _check_error(self, code, errtext,
677676 def test_assign_call (self ):
678677 self ._check_error ("f() = 1" , "assign" )
679678
680- @support .skip_if_new_parser ("Pegen does not produce a specialized error "
681- "message yet" )
682679 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" )
684709
685710 def test_global_param_err_first (self ):
686711 source = """if 1:
0 commit comments