diff options
| author | Pablo Galindo <Pablogsal@gmail.com> | 2020-06-10 14:07:06 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-10 14:07:06 +0100 |
| commit | c6483c989694cfa328dabd45eb191440da54bc68 (patch) | |
| tree | ab9692a04c460323035c804d9ed8c64bc5bdc866 /Grammar/python.gram | |
| parent | 0d00b2a5d74390da7bbeff7dfa73abf2eb46124a (diff) | |
| download | cpython-git-c6483c989694cfa328dabd45eb191440da54bc68.tar.gz | |
Raise specialised syntax error for invalid lambda parameters (GH-20776)
Diffstat (limited to 'Grammar/python.gram')
| -rw-r--r-- | Grammar/python.gram | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Grammar/python.gram b/Grammar/python.gram index dd425eff30..2c350ef68a 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -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") } |
