mirror of https://github.com/python/cpython
Issue #29369: Use Py_IDENTIFIER in Python-ast.c
This commit is contained in:
parent
6e08baf12d
commit
fc489082c8
|
@ -622,6 +622,9 @@ class PyTypesVisitor(PickleVisitor):
|
||||||
|
|
||||||
def visitModule(self, mod):
|
def visitModule(self, mod):
|
||||||
self.emit("""
|
self.emit("""
|
||||||
|
_Py_IDENTIFIER(_fields);
|
||||||
|
_Py_IDENTIFIER(_attributes);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
PyObject_HEAD
|
PyObject_HEAD
|
||||||
PyObject *dict;
|
PyObject *dict;
|
||||||
|
@ -650,7 +653,6 @@ ast_clear(AST_object *self)
|
||||||
static int
|
static int
|
||||||
ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
|
ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
|
||||||
{
|
{
|
||||||
_Py_IDENTIFIER(_fields);
|
|
||||||
Py_ssize_t i, numfields = 0;
|
Py_ssize_t i, numfields = 0;
|
||||||
int res = -1;
|
int res = -1;
|
||||||
PyObject *key, *value, *fields;
|
PyObject *key, *value, *fields;
|
||||||
|
@ -775,6 +777,8 @@ static PyTypeObject AST_type = {
|
||||||
|
|
||||||
static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields)
|
static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields)
|
||||||
{
|
{
|
||||||
|
_Py_IDENTIFIER(__module__);
|
||||||
|
_Py_IDENTIFIER(_ast);
|
||||||
PyObject *fnames, *result;
|
PyObject *fnames, *result;
|
||||||
int i;
|
int i;
|
||||||
fnames = PyTuple_New(num_fields);
|
fnames = PyTuple_New(num_fields);
|
||||||
|
@ -787,8 +791,11 @@ static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int
|
||||||
}
|
}
|
||||||
PyTuple_SET_ITEM(fnames, i, field);
|
PyTuple_SET_ITEM(fnames, i, field);
|
||||||
}
|
}
|
||||||
result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){sOss}",
|
result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOO}",
|
||||||
type, base, "_fields", fnames, "__module__", "_ast");
|
type, base,
|
||||||
|
_PyUnicode_FromId(&PyId__fields), fnames,
|
||||||
|
_PyUnicode_FromId(&PyId___module__),
|
||||||
|
_PyUnicode_FromId(&PyId__ast));
|
||||||
Py_DECREF(fnames);
|
Py_DECREF(fnames);
|
||||||
return (PyTypeObject*)result;
|
return (PyTypeObject*)result;
|
||||||
}
|
}
|
||||||
|
@ -796,7 +803,6 @@ static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int
|
||||||
static int add_attributes(PyTypeObject* type, char**attrs, int num_fields)
|
static int add_attributes(PyTypeObject* type, char**attrs, int num_fields)
|
||||||
{
|
{
|
||||||
int i, result;
|
int i, result;
|
||||||
_Py_IDENTIFIER(_attributes);
|
|
||||||
PyObject *s, *l = PyTuple_New(num_fields);
|
PyObject *s, *l = PyTuple_New(num_fields);
|
||||||
if (!l)
|
if (!l)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -942,8 +948,8 @@ static int add_ast_fields(void)
|
||||||
d = AST_type.tp_dict;
|
d = AST_type.tp_dict;
|
||||||
empty_tuple = PyTuple_New(0);
|
empty_tuple = PyTuple_New(0);
|
||||||
if (!empty_tuple ||
|
if (!empty_tuple ||
|
||||||
PyDict_SetItemString(d, "_fields", empty_tuple) < 0 ||
|
_PyDict_SetItemId(d, &PyId__fields, empty_tuple) < 0 ||
|
||||||
PyDict_SetItemString(d, "_attributes", empty_tuple) < 0) {
|
_PyDict_SetItemId(d, &PyId__attributes, empty_tuple) < 0) {
|
||||||
Py_XDECREF(empty_tuple);
|
Py_XDECREF(empty_tuple);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1091,8 +1097,7 @@ class ObjVisitor(PickleVisitor):
|
||||||
self.emit("%s o = (%s)_o;" % (ctype, ctype), 1)
|
self.emit("%s o = (%s)_o;" % (ctype, ctype), 1)
|
||||||
self.emit("PyObject *result = NULL, *value = NULL;", 1)
|
self.emit("PyObject *result = NULL, *value = NULL;", 1)
|
||||||
self.emit('if (!o) {', 1)
|
self.emit('if (!o) {', 1)
|
||||||
self.emit("Py_INCREF(Py_None);", 2)
|
self.emit("Py_RETURN_NONE;", 2)
|
||||||
self.emit('return Py_None;', 2)
|
|
||||||
self.emit("}", 1)
|
self.emit("}", 1)
|
||||||
self.emit('', 0)
|
self.emit('', 0)
|
||||||
|
|
||||||
|
|
|
@ -504,6 +504,9 @@ static char *withitem_fields[]={
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
_Py_IDENTIFIER(_fields);
|
||||||
|
_Py_IDENTIFIER(_attributes);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
PyObject_HEAD
|
PyObject_HEAD
|
||||||
PyObject *dict;
|
PyObject *dict;
|
||||||
|
@ -532,7 +535,6 @@ ast_clear(AST_object *self)
|
||||||
static int
|
static int
|
||||||
ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
|
ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
|
||||||
{
|
{
|
||||||
_Py_IDENTIFIER(_fields);
|
|
||||||
Py_ssize_t i, numfields = 0;
|
Py_ssize_t i, numfields = 0;
|
||||||
int res = -1;
|
int res = -1;
|
||||||
PyObject *key, *value, *fields;
|
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)
|
static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields)
|
||||||
{
|
{
|
||||||
|
_Py_IDENTIFIER(__module__);
|
||||||
|
_Py_IDENTIFIER(_ast);
|
||||||
PyObject *fnames, *result;
|
PyObject *fnames, *result;
|
||||||
int i;
|
int i;
|
||||||
fnames = PyTuple_New(num_fields);
|
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);
|
PyTuple_SET_ITEM(fnames, i, field);
|
||||||
}
|
}
|
||||||
result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){sOss}",
|
result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOO}",
|
||||||
type, base, "_fields", fnames, "__module__", "_ast");
|
type, base,
|
||||||
|
_PyUnicode_FromId(&PyId__fields), fnames,
|
||||||
|
_PyUnicode_FromId(&PyId___module__),
|
||||||
|
_PyUnicode_FromId(&PyId__ast));
|
||||||
Py_DECREF(fnames);
|
Py_DECREF(fnames);
|
||||||
return (PyTypeObject*)result;
|
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)
|
static int add_attributes(PyTypeObject* type, char**attrs, int num_fields)
|
||||||
{
|
{
|
||||||
int i, result;
|
int i, result;
|
||||||
_Py_IDENTIFIER(_attributes);
|
|
||||||
PyObject *s, *l = PyTuple_New(num_fields);
|
PyObject *s, *l = PyTuple_New(num_fields);
|
||||||
if (!l)
|
if (!l)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -824,8 +830,8 @@ static int add_ast_fields(void)
|
||||||
d = AST_type.tp_dict;
|
d = AST_type.tp_dict;
|
||||||
empty_tuple = PyTuple_New(0);
|
empty_tuple = PyTuple_New(0);
|
||||||
if (!empty_tuple ||
|
if (!empty_tuple ||
|
||||||
PyDict_SetItemString(d, "_fields", empty_tuple) < 0 ||
|
_PyDict_SetItemId(d, &PyId__fields, empty_tuple) < 0 ||
|
||||||
PyDict_SetItemString(d, "_attributes", empty_tuple) < 0) {
|
_PyDict_SetItemId(d, &PyId__attributes, empty_tuple) < 0) {
|
||||||
Py_XDECREF(empty_tuple);
|
Py_XDECREF(empty_tuple);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue