bpo-46289: Make conversion of FormattedValue not optional on ASDL (GH-30467)

Automerge-Triggered-By: GH:isidentical
This commit is contained in:
Batuhan Taskaya 2022-01-08 00:05:28 +03:00 committed by GitHub
parent 6d07a9fb7c
commit d382f7ee0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 9 deletions

View File

@ -0,0 +1,2 @@
ASDL declaration of ``FormattedValue`` has changed to reflect ``conversion``
field is not optional.

View File

@ -75,7 +75,7 @@ module Python
-- x < 4 < 3 and (x < 4) < 3 -- x < 4 < 3 and (x < 4) < 3
| Compare(expr left, cmpop* ops, expr* comparators) | Compare(expr left, cmpop* ops, expr* comparators)
| Call(expr func, expr* args, keyword* keywords) | Call(expr func, expr* args, keyword* keywords)
| FormattedValue(expr value, int? conversion, expr? format_spec) | FormattedValue(expr value, int conversion, expr? format_spec)
| JoinedStr(expr* values) | JoinedStr(expr* values)
| Constant(constant value, string? kind) | Constant(constant value, string? kind)

13
Python/Python-ast.c generated
View File

@ -1324,7 +1324,7 @@ init_types(struct ast_state *state)
" | YieldFrom(expr value)\n" " | YieldFrom(expr value)\n"
" | Compare(expr left, cmpop* ops, expr* comparators)\n" " | Compare(expr left, cmpop* ops, expr* comparators)\n"
" | Call(expr func, expr* args, keyword* keywords)\n" " | Call(expr func, expr* args, keyword* keywords)\n"
" | FormattedValue(expr value, int? conversion, expr? format_spec)\n" " | FormattedValue(expr value, int conversion, expr? format_spec)\n"
" | JoinedStr(expr* values)\n" " | JoinedStr(expr* values)\n"
" | Constant(constant value, string? kind)\n" " | Constant(constant value, string? kind)\n"
" | Attribute(expr value, identifier attr, expr_context ctx)\n" " | Attribute(expr value, identifier attr, expr_context ctx)\n"
@ -1414,11 +1414,8 @@ init_types(struct ast_state *state)
state->FormattedValue_type = make_type(state, "FormattedValue", state->FormattedValue_type = make_type(state, "FormattedValue",
state->expr_type, state->expr_type,
FormattedValue_fields, 3, FormattedValue_fields, 3,
"FormattedValue(expr value, int? conversion, expr? format_spec)"); "FormattedValue(expr value, int conversion, expr? format_spec)");
if (!state->FormattedValue_type) return 0; if (!state->FormattedValue_type) return 0;
if (PyObject_SetAttr(state->FormattedValue_type, state->conversion,
Py_None) == -1)
return 0;
if (PyObject_SetAttr(state->FormattedValue_type, state->format_spec, if (PyObject_SetAttr(state->FormattedValue_type, state->format_spec,
Py_None) == -1) Py_None) == -1)
return 0; return 0;
@ -9249,9 +9246,9 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
if (_PyObject_LookupAttr(obj, state->conversion, &tmp) < 0) { if (_PyObject_LookupAttr(obj, state->conversion, &tmp) < 0) {
return 1; return 1;
} }
if (tmp == NULL || tmp == Py_None) { if (tmp == NULL) {
Py_CLEAR(tmp); PyErr_SetString(PyExc_TypeError, "required field \"conversion\" missing from FormattedValue");
conversion = 0; return 1;
} }
else { else {
int res; int res;