if (*out == NULL) goto failed;
return 0;
}
- Py_XDECREF(tmp);
- tmp = NULL;
+ isinstance = PyObject_IsInstance(obj, (PyObject*)NameConstant_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ singleton value;
+
+ if (_PyObject_HasAttrId(obj, &PyId_value)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_value);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_singleton(tmp, &value, arena);
+ if (res != 0) goto failed;
++ Py_CLEAR(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from NameConstant");
+ return 1;
+ }
+ *out = NameConstant(value, lineno, col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type);
if (isinstance == -1) {
return 1;
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_vararg);
if (tmp == NULL) goto failed;
- res = obj2ast_identifier(tmp, &vararg, arena);
+ res = obj2ast_arg(tmp, &vararg, arena);
if (res != 0) goto failed;
- Py_XDECREF(tmp);
- tmp = NULL;
+ Py_CLEAR(tmp);
} else {
vararg = NULL;
}
PyErr_SetString(PyExc_TypeError, "required field \"kwonlyargs\" missing from arguments");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_kwarg)) {
+ if (_PyObject_HasAttrId(obj, &PyId_kw_defaults)) {
int res;
- tmp = _PyObject_GetAttrId(obj, &PyId_kwarg);
+ Py_ssize_t len;
+ Py_ssize_t i;
+ tmp = _PyObject_GetAttrId(obj, &PyId_kw_defaults);
if (tmp == NULL) goto failed;
- res = obj2ast_identifier(tmp, &kwarg, arena);
- if (res != 0) goto failed;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name);
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ kw_defaults = asdl_seq_new(len, arena);
+ if (kw_defaults == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty value;
+ res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
+ if (res != 0) goto failed;
+ asdl_seq_SET(kw_defaults, i, value);
+ }
- Py_XDECREF(tmp);
- tmp = NULL;
+ Py_CLEAR(tmp);
} else {
- kwarg = NULL;
+ PyErr_SetString(PyExc_TypeError, "required field \"kw_defaults\" missing from arguments");
+ return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_kwargannotation)) {
+ if (exists_not_none(obj, &PyId_kwarg)) {
int res;
- tmp = _PyObject_GetAttrId(obj, &PyId_kwargannotation);
+ tmp = _PyObject_GetAttrId(obj, &PyId_kwarg);
if (tmp == NULL) goto failed;
- res = obj2ast_expr(tmp, &kwargannotation, arena);
+ res = obj2ast_arg(tmp, &kwarg, arena);
if (res != 0) goto failed;
- Py_XDECREF(tmp);
- tmp = NULL;
+ Py_CLEAR(tmp);
} else {
- kwargannotation = NULL;
+ kwarg = NULL;
}
if (_PyObject_HasAttrId(obj, &PyId_defaults)) {
int res;