[3.13] gh-122300: Preserve AST nodes for format specifiers with single elements (GH-122308) (#122364)

(cherry picked from commit db2d8b6db1)
This commit is contained in:
Pablo Galindo Salgado 2024-07-27 20:27:01 +01:00 committed by GitHub
parent a93f97c56d
commit c8f3c1daa4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 138 additions and 2982 deletions

View File

@ -316,7 +316,9 @@ Literals
args=[ args=[
Name(id='a', ctx=Load())]), Name(id='a', ctx=Load())]),
conversion=-1, conversion=-1,
format_spec=Constant(value='.3'))])) format_spec=JoinedStr(
values=[
Constant(value='.3')]))]))
.. class:: List(elts, ctx) .. class:: List(elts, ctx)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
Preserve AST nodes for f-string with single-element format specifiers. Patch
by Pablo Galindo

View File

@ -1002,7 +1002,8 @@ _PyPegen_setup_full_format_spec(Parser *p, Token *colon, asdl_expr_seq *spec, in
spec = resized_spec; spec = resized_spec;
} }
expr_ty res; expr_ty res;
if (asdl_seq_LEN(spec) == 0) { Py_ssize_t n = asdl_seq_LEN(spec);
if (n == 0 || (n == 1 && asdl_seq_GET(spec, 0)->kind == Constant_kind)) {
res = _PyAST_JoinedStr(spec, lineno, col_offset, end_lineno, res = _PyAST_JoinedStr(spec, lineno, col_offset, end_lineno,
end_col_offset, p->arena); end_col_offset, p->arena);
} else { } else {