mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
gh-106396: Special-case empty format spec to gen empty JoinedStr node (#106401)
This commit is contained in:
parent
8f6df5e9cb
commit
dfe4de2038
3 changed files with 33 additions and 0 deletions
|
|
@ -997,6 +997,18 @@ _PyPegen_setup_full_format_spec(Parser *p, Token *colon, asdl_expr_seq *spec, in
|
|||
if (!spec) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// This is needed to keep compatibility with 3.11, where an empty format spec is parsed
|
||||
// as an *empty* JoinedStr node, instead of having an empty constant in it.
|
||||
if (asdl_seq_LEN(spec) == 1) {
|
||||
expr_ty e = asdl_seq_GET(spec, 0);
|
||||
if (e->kind == Constant_kind
|
||||
&& PyUnicode_Check(e->v.Constant.value)
|
||||
&& PyUnicode_GetLength(e->v.Constant.value) == 0) {
|
||||
spec = _Py_asdl_expr_seq_new(0, arena);
|
||||
}
|
||||
}
|
||||
|
||||
expr_ty res = _PyAST_JoinedStr(spec, lineno, col_offset, end_lineno, end_col_offset, p->arena);
|
||||
if (!res) {
|
||||
return NULL;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue