diff options
author | INADA Naoki <songofacandy@gmail.com> | 2017-01-25 13:33:43 (GMT) |
---|---|---|
committer | INADA Naoki <songofacandy@gmail.com> | 2017-01-25 13:33:43 (GMT) |
commit | fc489082c89f3de9dc976b4b54cac56bcdac6a10 (patch) | |
tree | 4fa392347b47dbd4b45edebe714d636b89a8c7b2 /Python | |
parent | 6e08baf12da60950561d50273799df93d120c127 (diff) | |
download | cpython-fc489082c89f3de9dc976b4b54cac56bcdac6a10.zip cpython-fc489082c89f3de9dc976b4b54cac56bcdac6a10.tar.gz cpython-fc489082c89f3de9dc976b4b54cac56bcdac6a10.tar.bz2 |
Issue #29369: Use Py_IDENTIFIER in Python-ast.c
Diffstat (limited to 'Python')
-rw-r--r-- | Python/Python-ast.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/Python/Python-ast.c b/Python/Python-ast.c index a049641..dcf24f0 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -504,6 +504,9 @@ static char *withitem_fields[]={ }; +_Py_IDENTIFIER(_fields); +_Py_IDENTIFIER(_attributes); + typedef struct { PyObject_HEAD PyObject *dict; @@ -532,7 +535,6 @@ ast_clear(AST_object *self) static int ast_type_init(PyObject *self, PyObject *args, PyObject *kw) { - _Py_IDENTIFIER(_fields); Py_ssize_t i, numfields = 0; int res = -1; PyObject *key, *value, *fields; @@ -657,6 +659,8 @@ static PyTypeObject AST_type = { static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields) { + _Py_IDENTIFIER(__module__); + _Py_IDENTIFIER(_ast); PyObject *fnames, *result; int i; fnames = PyTuple_New(num_fields); @@ -669,8 +673,11 @@ static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int } PyTuple_SET_ITEM(fnames, i, field); } - result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){sOss}", - type, base, "_fields", fnames, "__module__", "_ast"); + result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOO}", + type, base, + _PyUnicode_FromId(&PyId__fields), fnames, + _PyUnicode_FromId(&PyId___module__), + _PyUnicode_FromId(&PyId__ast)); Py_DECREF(fnames); return (PyTypeObject*)result; } @@ -678,7 +685,6 @@ static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int static int add_attributes(PyTypeObject* type, char**attrs, int num_fields) { int i, result; - _Py_IDENTIFIER(_attributes); PyObject *s, *l = PyTuple_New(num_fields); if (!l) return 0; @@ -824,8 +830,8 @@ static int add_ast_fields(void) d = AST_type.tp_dict; empty_tuple = PyTuple_New(0); if (!empty_tuple || - PyDict_SetItemString(d, "_fields", empty_tuple) < 0 || - PyDict_SetItemString(d, "_attributes", empty_tuple) < 0) { + _PyDict_SetItemId(d, &PyId__fields, empty_tuple) < 0 || + _PyDict_SetItemId(d, &PyId__attributes, empty_tuple) < 0) { Py_XDECREF(empty_tuple); return -1; } |