Validate the AST produced by the parser in debug mode (GH-21643)

This will improve the debug experience if something fails in the produced AST. Previously, errors in the produced AST can be felt much later like in the garbage collector or the compiler, making debugging them much more difficult.
This commit is contained in:
Pablo Galindo 2020-07-27 23:46:59 +01:00 committed by GitHub
parent 13efaec2e0
commit 1332226b32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 0 deletions

View File

@ -4,6 +4,7 @@
#include "pegen.h" #include "pegen.h"
#include "string_parser.h" #include "string_parser.h"
#include "ast.h"
PyObject * PyObject *
_PyPegen_new_type_comment(Parser *p, char *s) _PyPegen_new_type_comment(Parser *p, char *s)
@ -1137,6 +1138,14 @@ _PyPegen_run_parser(Parser *p)
return RAISE_SYNTAX_ERROR("multiple statements found while compiling a single statement"); return RAISE_SYNTAX_ERROR("multiple statements found while compiling a single statement");
} }
#if defined(Py_DEBUG) && defined(Py_BUILD_CORE)
if (p->start_rule == Py_single_input ||
p->start_rule == Py_file_input ||
p->start_rule == Py_eval_input)
{
assert(PyAST_Validate(res));
}
#endif
return res; return res;
} }