diff options
author | Pablo Galindo <Pablogsal@gmail.com> | 2020-09-03 14:29:32 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-03 14:29:32 (GMT) |
commit | 315a61f7a9418d904e0eea14b1f054fac3a90e9f (patch) | |
tree | 621d8d728f29ec583fdda94e262182129fe81a15 /Parser/pegen.c | |
parent | 851606007665dc30089e5e1953208c5428e455b1 (diff) | |
download | cpython-315a61f7a9418d904e0eea14b1f054fac3a90e9f.zip cpython-315a61f7a9418d904e0eea14b1f054fac3a90e9f.tar.gz cpython-315a61f7a9418d904e0eea14b1f054fac3a90e9f.tar.bz2 |
bpo-41697: Correctly handle KeywordOrStarred when parsing arguments in the parser (GH-22077)
Diffstat (limited to 'Parser/pegen.c')
-rw-r--r-- | Parser/pegen.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/Parser/pegen.c b/Parser/pegen.c index 2507bc4..4beb2ab 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -2219,14 +2219,15 @@ _PyPegen_nonparen_genexp_in_call(Parser *p, expr_ty args) } -expr_ty _PyPegen_collect_call_seqs(Parser *p, asdl_seq *a, asdl_seq *b) { +expr_ty _PyPegen_collect_call_seqs(Parser *p, asdl_seq *a, asdl_seq *b, + int lineno, int col_offset, int end_lineno, + int end_col_offset, PyArena *arena) { Py_ssize_t args_len = asdl_seq_LEN(a); Py_ssize_t total_len = args_len; if (b == NULL) { - expr_ty first = asdl_seq_GET(a, 0); - expr_ty last = asdl_seq_GET(a, args_len - 1); - return _Py_Call(_PyPegen_dummy_name(p), a, NULL, EXTRA_EXPR(first, last)); + return _Py_Call(_PyPegen_dummy_name(p), a, NULL, lineno, col_offset, + end_lineno, end_col_offset, arena); } @@ -2237,7 +2238,7 @@ expr_ty _PyPegen_collect_call_seqs(Parser *p, asdl_seq *a, asdl_seq *b) { total_len += asdl_seq_LEN(starreds); } - asdl_seq *args = _Py_asdl_seq_new(total_len, p->arena); + asdl_seq *args = _Py_asdl_seq_new(total_len, arena); Py_ssize_t i = 0; for (i = 0; i < args_len; i++) { @@ -2247,8 +2248,8 @@ expr_ty _PyPegen_collect_call_seqs(Parser *p, asdl_seq *a, asdl_seq *b) { asdl_seq_SET(args, i, asdl_seq_GET(starreds, i - args_len)); } - expr_ty first = asdl_seq_GET(args, 0); - expr_ty last = asdl_seq_GET(b, asdl_seq_LEN(b)-1); + return _Py_Call(_PyPegen_dummy_name(p), args, keywords, lineno, + col_offset, end_lineno, end_col_offset, arena); + - return _Py_Call(_PyPegen_dummy_name(p), args, keywords, EXTRA_EXPR(first, last)); } |