bpo-40334: Spacialized error message for invalid args after bare '*' (GH-19865)

When parsing things like `def f(*): pass` the old parser used to output `SyntaxError: named arguments must follow bare *`, which the new parser wasn't able to do.
This commit is contained in:
Lysandros Nikolaou 2020-05-04 13:58:31 +03:00 committed by GitHub
parent c3f001461d
commit e10e7c771b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 598 additions and 336 deletions

View file

@ -242,11 +242,11 @@ class ExceptionTests(unittest.TestCase):
check('from __future__ import doesnt_exist', 1, 1)
check('from __future__ import braces', 1, 1)
check('x=1\nfrom __future__ import division', 2, 1)
check('def f(*):\n pass', 1, 7 if support.use_old_parser() else 8)
@support.skip_if_new_parser("Pegen column offsets might be different")
def testSyntaxErrorOffsetCustom(self):
self.check('for 1 in []: pass', 1, 5)
self.check('def f(*):\n pass', 1, 7)
self.check('[*x for x in xs]', 1, 2)
self.check('def f():\n x, y: int', 2, 3)
self.check('(yield i) = 2', 1, 1)