gh-110696: Fix incorrect syntax error message for incorrect argument unpacking (#110706)

This commit is contained in:
Pablo Galindo Salgado 2023-10-12 10:02:02 +01:00 committed by GitHub
parent ec5622d197
commit 3d180347ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 2447 additions and 2081 deletions

View File

@ -1128,7 +1128,8 @@ func_type_comment[Token*]:
# From here on, there are rules for invalid syntax with specialised error messages # From here on, there are rules for invalid syntax with specialised error messages
invalid_arguments: invalid_arguments:
| a=args ',' '*' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "iterable argument unpacking follows keyword argument unpacking") } | ((','.(starred_expression | ( assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' b='*' {
RAISE_SYNTAX_ERROR_KNOWN_LOCATION(b, "iterable argument unpacking follows keyword argument unpacking") }
| a=expression b=for_if_clauses ',' [args | expression for_if_clauses] { | a=expression b=for_if_clauses ',' [args | expression for_if_clauses] {
RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, _PyPegen_get_last_comprehension_item(PyPegen_last_item(b, comprehension_ty)), "Generator expression must be parenthesized") } RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, _PyPegen_get_last_comprehension_item(PyPegen_last_item(b, comprehension_ty)), "Generator expression must be parenthesized") }
| a=NAME b='=' expression for_if_clauses { | a=NAME b='=' expression for_if_clauses {

View File

@ -1955,6 +1955,17 @@ Invalid expressions in type scopes:
... ...
SyntaxError: yield expression cannot be used within the definition of a generic SyntaxError: yield expression cannot be used within the definition of a generic
>>> f(**x, *y)
Traceback (most recent call last):
SyntaxError: iterable argument unpacking follows keyword argument unpacking
>>> f(**x, *)
Traceback (most recent call last):
SyntaxError: iterable argument unpacking follows keyword argument unpacking
>>> f(x, *:)
Traceback (most recent call last):
SyntaxError: invalid syntax
""" """
import re import re

View File

@ -0,0 +1,2 @@
Fix incorrect error message for invalid argument unpacking. Patch by Pablo
Galindo

4512
Parser/parser.c generated

File diff suppressed because it is too large Load Diff