summaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Modules/symtablemodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tools/python3/src/Modules/symtablemodule.c')
-rw-r--r--contrib/tools/python3/src/Modules/symtablemodule.c100
1 files changed, 50 insertions, 50 deletions
diff --git a/contrib/tools/python3/src/Modules/symtablemodule.c b/contrib/tools/python3/src/Modules/symtablemodule.c
index 9180f185e1e..c25ecc2b5dc 100644
--- a/contrib/tools/python3/src/Modules/symtablemodule.c
+++ b/contrib/tools/python3/src/Modules/symtablemodule.c
@@ -1,8 +1,5 @@
#include "Python.h"
-
-#include "code.h"
-#include "Python-ast.h"
-#include "symtable.h"
+#include "pycore_symtable.h" // struct symtable
#include "clinic/symtablemodule.c.h"
/*[clinic input]
@@ -61,8 +58,7 @@ _symtable_symtable_impl(PyObject *module, PyObject *source,
}
t = (PyObject *)st->st_top;
Py_INCREF(t);
- PyMem_Free((void *)st->st_future);
- PySymtable_Free(st);
+ _PySymtable_Free(st);
return t;
}
@@ -71,56 +67,60 @@ static PyMethodDef symtable_methods[] = {
{NULL, NULL} /* sentinel */
};
-static struct PyModuleDef symtablemodule = {
- PyModuleDef_HEAD_INIT,
- "_symtable",
- NULL,
- -1,
- symtable_methods,
- NULL,
- NULL,
- NULL,
- NULL
-};
+static int
+symtable_init_stentry_type(PyObject *m)
+{
+ return PyType_Ready(&PySTEntry_Type);
+}
-PyMODINIT_FUNC
-PyInit__symtable(void)
+static int
+symtable_init_constants(PyObject *m)
{
- PyObject *m;
+ if (PyModule_AddIntMacro(m, USE) < 0) return -1;
+ if (PyModule_AddIntMacro(m, DEF_GLOBAL) < 0) return -1;
+ if (PyModule_AddIntMacro(m, DEF_NONLOCAL) < 0) return -1;
+ if (PyModule_AddIntMacro(m, DEF_LOCAL) < 0) return -1;
+ if (PyModule_AddIntMacro(m, DEF_PARAM) < 0) return -1;
+ if (PyModule_AddIntMacro(m, DEF_FREE) < 0) return -1;
+ if (PyModule_AddIntMacro(m, DEF_FREE_CLASS) < 0) return -1;
+ if (PyModule_AddIntMacro(m, DEF_IMPORT) < 0) return -1;
+ if (PyModule_AddIntMacro(m, DEF_BOUND) < 0) return -1;
+ if (PyModule_AddIntMacro(m, DEF_ANNOT) < 0) return -1;
- if (PyType_Ready(&PySTEntry_Type) < 0)
- return NULL;
+ if (PyModule_AddIntConstant(m, "TYPE_FUNCTION", FunctionBlock) < 0)
+ return -1;
+ if (PyModule_AddIntConstant(m, "TYPE_CLASS", ClassBlock) < 0) return -1;
+ if (PyModule_AddIntConstant(m, "TYPE_MODULE", ModuleBlock) < 0)
+ return -1;
- m = PyModule_Create(&symtablemodule);
- if (m == NULL)
- return NULL;
- PyModule_AddIntMacro(m, USE);
- PyModule_AddIntMacro(m, DEF_GLOBAL);
- PyModule_AddIntMacro(m, DEF_NONLOCAL);
- PyModule_AddIntMacro(m, DEF_LOCAL);
- PyModule_AddIntMacro(m, DEF_PARAM);
- PyModule_AddIntMacro(m, DEF_FREE);
- PyModule_AddIntMacro(m, DEF_FREE_CLASS);
- PyModule_AddIntMacro(m, DEF_IMPORT);
- PyModule_AddIntMacro(m, DEF_BOUND);
- PyModule_AddIntMacro(m, DEF_ANNOT);
+ if (PyModule_AddIntMacro(m, LOCAL) < 0) return -1;
+ if (PyModule_AddIntMacro(m, GLOBAL_EXPLICIT) < 0) return -1;
+ if (PyModule_AddIntMacro(m, GLOBAL_IMPLICIT) < 0) return -1;
+ if (PyModule_AddIntMacro(m, FREE) < 0) return -1;
+ if (PyModule_AddIntMacro(m, CELL) < 0) return -1;
- PyModule_AddIntConstant(m, "TYPE_FUNCTION", FunctionBlock);
- PyModule_AddIntConstant(m, "TYPE_CLASS", ClassBlock);
- PyModule_AddIntConstant(m, "TYPE_MODULE", ModuleBlock);
+ if (PyModule_AddIntConstant(m, "SCOPE_OFF", SCOPE_OFFSET) < 0) return -1;
+ if (PyModule_AddIntMacro(m, SCOPE_MASK) < 0) return -1;
- PyModule_AddIntMacro(m, LOCAL);
- PyModule_AddIntMacro(m, GLOBAL_EXPLICIT);
- PyModule_AddIntMacro(m, GLOBAL_IMPLICIT);
- PyModule_AddIntMacro(m, FREE);
- PyModule_AddIntMacro(m, CELL);
+ return 0;
+}
- PyModule_AddIntConstant(m, "SCOPE_OFF", SCOPE_OFFSET);
- PyModule_AddIntMacro(m, SCOPE_MASK);
+static PyModuleDef_Slot symtable_slots[] = {
+ {Py_mod_exec, symtable_init_stentry_type},
+ {Py_mod_exec, symtable_init_constants},
+ {0, NULL}
+};
- if (PyErr_Occurred()) {
- Py_DECREF(m);
- m = 0;
- }
- return m;
+static struct PyModuleDef symtablemodule = {
+ PyModuleDef_HEAD_INIT,
+ .m_name = "_symtable",
+ .m_size = 0,
+ .m_methods = symtable_methods,
+ .m_slots = symtable_slots,
+};
+
+PyMODINIT_FUNC
+PyInit__symtable(void)
+{
+ return PyModuleDef_Init(&symtablemodule);
}