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

@ -603,6 +603,12 @@ FAIL_SPECIALIZED_MESSAGE_CASES = [
("1 += 1", "cannot assign to literal"),
("pass\n pass", "unexpected indent"),
("def f():\npass", "expected an indented block"),
("def f(*): pass", "named arguments must follow bare *"),
("def f(*,): pass", "named arguments must follow bare *"),
("def f(*, **a): pass", "named arguments must follow bare *"),
("lambda *: pass", "named arguments must follow bare *"),
("lambda *,: pass", "named arguments must follow bare *"),
("lambda *, **a: pass", "named arguments must follow bare *"),
]
GOOD_BUT_FAIL_TEST_CASES = [