mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
[3.9] Validate the AST produced by the parser in debug mode (GH-21643) (GH-21646)
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..
(cherry picked from commit 1332226b32
)
Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
This commit is contained in:
parent
e962e3f65a
commit
bc2c0e9a57
1 changed files with 9 additions and 0 deletions
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "pegen.h"
|
#include "pegen.h"
|
||||||
#include "parse_string.h"
|
#include "parse_string.h"
|
||||||
|
#include "ast.h"
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
_PyPegen_new_type_comment(Parser *p, char *s)
|
_PyPegen_new_type_comment(Parser *p, char *s)
|
||||||
|
@ -1136,6 +1137,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue