mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Raise specialised syntax error for invalid lambda parameters (GH-20776)
This commit is contained in:
parent
0d00b2a5d7
commit
c6483c9896
3 changed files with 902 additions and 596 deletions
|
@ -329,7 +329,11 @@ expression[expr_ty] (memo):
|
|||
| lambdef
|
||||
|
||||
lambdef[expr_ty]:
|
||||
| 'lambda' a=[lambda_parameters] ':' b=expression { _Py_Lambda((a) ? a : CHECK(_PyPegen_empty_arguments(p)), b, EXTRA) }
|
||||
| 'lambda' a=[lambda_params] ':' b=expression { _Py_Lambda((a) ? a : CHECK(_PyPegen_empty_arguments(p)), b, EXTRA) }
|
||||
|
||||
lambda_params[arguments_ty]:
|
||||
| invalid_lambda_parameters
|
||||
| lambda_parameters
|
||||
|
||||
# lambda_parameters etc. duplicates parameters but without annotations
|
||||
# or type comments, and if there's no comma after a parameter, we expect
|
||||
|
@ -669,6 +673,9 @@ invalid_dict_comprehension:
|
|||
invalid_parameters:
|
||||
| param_no_default* (slash_with_default | param_with_default+) param_no_default {
|
||||
RAISE_SYNTAX_ERROR("non-default argument follows default argument") }
|
||||
invalid_lambda_parameters:
|
||||
| lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default {
|
||||
RAISE_SYNTAX_ERROR("non-default argument follows default argument") }
|
||||
invalid_star_etc:
|
||||
| '*' (')' | ',' (')' | '**')) { RAISE_SYNTAX_ERROR("named arguments must follow bare *") }
|
||||
| '*' ',' TYPE_COMMENT { RAISE_SYNTAX_ERROR("bare * has associated type comment") }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue