gh-106396: Special-case empty format spec to gen empty JoinedStr node (#106401)

This commit is contained in:
Lysandros Nikolaou 2023-07-04 14:19:08 +02:00 committed by GitHub
parent 8f6df5e9cb
commit dfe4de2038
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 0 deletions

View file

@ -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;