bpo-35177: Add dependencies between header files (GH-10361)
* ast.h now includes Python-ast.h and node.h * parsetok.h now includes node.h and grammar.h * symtable.h now includes Python-ast.h * Modify asdl_c.py to enhance Python-ast.h: * Add #ifndef/#define Py_PYTHON_AST_H to be able to include the header twice * Add "extern { ... }" for C++ * Undefine "Yield" macro conflicting with winbase.h * Remove "#undef Yield" from C files, it's now done in Python-ast.h * Remove now useless includes in C files
This commit is contained in:
parent
fd3a91cbf9
commit
5f2df88b63
|
@ -1,7 +1,15 @@
|
|||
/* File automatically generated by Parser/asdl_c.py. */
|
||||
|
||||
#ifndef Py_PYTHON_AST_H
|
||||
#define Py_PYTHON_AST_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "asdl.h"
|
||||
|
||||
#undef Yield /* undefine macro conflicting with winbase.h */
|
||||
|
||||
typedef struct _mod *mod_ty;
|
||||
|
||||
typedef struct _stmt *stmt_ty;
|
||||
|
@ -607,3 +615,8 @@ withitem_ty _Py_withitem(expr_ty context_expr, expr_ty optional_vars, PyArena
|
|||
PyObject* PyAST_mod2obj(mod_ty t);
|
||||
mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);
|
||||
int PyAST_Check(PyObject* obj);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !Py_PYTHON_AST_H */
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "Python-ast.h" /* mod_ty */
|
||||
#include "node.h" /* node */
|
||||
|
||||
PyAPI_FUNC(int) PyAST_Validate(mod_ty);
|
||||
PyAPI_FUNC(mod_ty) PyAST_FromNode(
|
||||
const node *n,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
/* Parser-tokenizer link interface */
|
||||
|
||||
#ifndef Py_LIMITED_API
|
||||
#ifndef Py_PARSETOK_H
|
||||
#define Py_PARSETOK_H
|
||||
|
@ -7,6 +7,9 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "grammar.h" /* grammar */
|
||||
#include "node.h" /* node */
|
||||
|
||||
typedef struct {
|
||||
int error;
|
||||
#ifndef PGEN
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
#ifndef Py_LIMITED_API
|
||||
#ifndef Py_SYMTABLE_H
|
||||
#define Py_SYMTABLE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "Python-ast.h" /* mod_ty */
|
||||
|
||||
/* XXX(ncoghlan): This is a weird mix of public names and interpreter internal
|
||||
* names.
|
||||
*/
|
||||
|
@ -115,4 +116,4 @@ PyAPI_FUNC(void) PySymtable_Free(struct symtable *);
|
|||
}
|
||||
#endif
|
||||
#endif /* !Py_SYMTABLE_H */
|
||||
#endif /* Py_LIMITED_API */
|
||||
#endif /* !Py_LIMITED_API */
|
||||
|
|
|
@ -32,15 +32,14 @@
|
|||
|
||||
#include "Python.h" /* general Python API */
|
||||
#include "Python-ast.h" /* mod_ty */
|
||||
#include "ast.h"
|
||||
#include "graminit.h" /* symbols defined in the grammar */
|
||||
#include "node.h" /* internal parser structure */
|
||||
#include "errcode.h" /* error codes for PyNode_*() */
|
||||
#include "token.h" /* token definitions */
|
||||
/* ISTERMINAL() / ISNONTERMINAL() */
|
||||
#include "grammar.h"
|
||||
#include "parsetok.h"
|
||||
/* ISTERMINAL() / ISNONTERMINAL() */
|
||||
#undef Yield
|
||||
#include "ast.h"
|
||||
|
||||
extern grammar _PyParser_Grammar; /* From graminit.c */
|
||||
|
||||
|
|
|
@ -1239,7 +1239,16 @@ def main(srcfile, dump_module=False):
|
|||
if H_FILE:
|
||||
with open(H_FILE, "w") as f:
|
||||
f.write(auto_gen_msg)
|
||||
f.write('#include "asdl.h"\n\n')
|
||||
f.write('#ifndef Py_PYTHON_AST_H\n')
|
||||
f.write('#define Py_PYTHON_AST_H\n')
|
||||
f.write('#ifdef __cplusplus\n')
|
||||
f.write('extern "C" {\n')
|
||||
f.write('#endif\n')
|
||||
f.write('\n')
|
||||
f.write('#include "asdl.h"\n')
|
||||
f.write('\n')
|
||||
f.write('#undef Yield /* undefine macro conflicting with winbase.h */\n')
|
||||
f.write('\n')
|
||||
c = ChainOfVisitors(TypeDefVisitor(f),
|
||||
StructVisitor(f),
|
||||
PrototypeVisitor(f),
|
||||
|
@ -1248,6 +1257,11 @@ def main(srcfile, dump_module=False):
|
|||
f.write("PyObject* PyAST_mod2obj(mod_ty t);\n")
|
||||
f.write("mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);\n")
|
||||
f.write("int PyAST_Check(PyObject* obj);\n")
|
||||
f.write('\n')
|
||||
f.write('#ifdef __cplusplus\n')
|
||||
f.write('}\n')
|
||||
f.write('#endif\n')
|
||||
f.write('#endif /* !Py_PYTHON_AST_H */\n')
|
||||
|
||||
if C_FILE:
|
||||
with open(C_FILE, "w") as f:
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/* AST Optimizer */
|
||||
#include "Python.h"
|
||||
#include "Python-ast.h"
|
||||
#include "node.h"
|
||||
#include "ast.h"
|
||||
|
||||
|
||||
|
|
|
@ -1,16 +1,9 @@
|
|||
/* Built-in functions */
|
||||
|
||||
#include "Python.h"
|
||||
#include "Python-ast.h"
|
||||
#include "pycore_state.h"
|
||||
|
||||
#include "node.h"
|
||||
#include "code.h"
|
||||
|
||||
#include "asdl.h"
|
||||
#include "ast.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include "ast.h"
|
||||
#include "pycore_state.h"
|
||||
|
||||
_Py_IDENTIFIER(__builtins__);
|
||||
_Py_IDENTIFIER(__dict__);
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include "Python.h"
|
||||
|
||||
#include "Python-ast.h"
|
||||
#include "node.h"
|
||||
#include "ast.h"
|
||||
#include "code.h"
|
||||
#include "symtable.h"
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
#include "Python.h"
|
||||
|
||||
#include "Python-ast.h"
|
||||
#undef Yield /* undefine macro conflicting with winbase.h */
|
||||
#include "pycore_hash.h"
|
||||
#include "pycore_lifecycle.h"
|
||||
#include "pycore_mem.h"
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
#include "Python.h"
|
||||
|
||||
#include "Python-ast.h"
|
||||
#undef Yield /* undefine macro conflicting with winbase.h */
|
||||
#include "pycore_context.h"
|
||||
#include "pycore_hamt.h"
|
||||
#include "pycore_lifecycle.h"
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include "Python.h"
|
||||
|
||||
#include "Python-ast.h"
|
||||
#undef Yield /* undefine macro conflicting with winbase.h */
|
||||
#include "pycore_state.h"
|
||||
#include "grammar.h"
|
||||
#include "node.h"
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
#include "Python.h"
|
||||
#include "pycore_state.h"
|
||||
#ifdef Yield
|
||||
#undef Yield /* undefine conflicting macro from winbase.h */
|
||||
#endif
|
||||
#include "Python-ast.h"
|
||||
#include "code.h"
|
||||
#include "symtable.h"
|
||||
#include "structmember.h"
|
||||
|
||||
|
|
Loading…
Reference in New Issue