gh-91210: Improve error message when non-default param follows default (GH-95933)

- Improve error message when parameter without a default follows one with a default
- Show same error message when positional-only params precede the default/non-default sequence
This commit is contained in:
Lysandros Nikolaou 2022-09-17 19:09:28 +02:00 committed by GitHub
parent 78359b1d45
commit 7e36abbb78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 655 additions and 629 deletions

View file

@ -334,7 +334,12 @@ From ast_for_arguments():
>>> def f(x, y=1, z):
... pass
Traceback (most recent call last):
SyntaxError: non-default argument follows default argument
SyntaxError: parameter without a default follows parameter with a default
>>> def f(x, /, y=1, z):
... pass
Traceback (most recent call last):
SyntaxError: parameter without a default follows parameter with a default
>>> def f(x, None):
... pass
@ -555,6 +560,14 @@ SyntaxError: expected default value expression
Traceback (most recent call last):
SyntaxError: expected default value expression
>>> lambda a,d=3,c: None
Traceback (most recent call last):
SyntaxError: parameter without a default follows parameter with a default
>>> lambda a,/,d=3,c: None
Traceback (most recent call last):
SyntaxError: parameter without a default follows parameter with a default
>>> import ast; ast.parse('''
... def f(
... *, # type: int